引用wiki
質數:
又稱素數,指在大於1的自然數中,除了1和該數自身外,無法被其他自然數整除的數(也可定義為只有1與該數本身兩個正因數的數)
完美數:
完全數,又稱完美數或完備數,是一些特殊的自然數:它所有的真因子(即除了自身以外的因數)的和,恰好等於它本身,完全數不可能是楔形數。 例如:第一個完全數是6,它有因數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6,恰好等於本身。
using System; //console會用到的 using System.Collections.Generic; //宣告list要用的 public class Program { public static void Main() { List<int> primeNumber = new List<int>(); //建立一個質數的清單 bool canDivided; for(int i=2;i<=100;i++) //1不算質數 也不算合數 { canDivided=false; foreach(int number in primeNumber) // 如果質數的清單裡面為空,則直接跳過 { if((i % number) == 0) canDivided=true; //如果數值能被除代表不是質數 } if(canDivided == false) //質數存進LIST primeNumber.Add(i); } foreach(int number in primeNumber) { Console.WriteLine(number); //把質數表列出來 } Console.WriteLine("Total:"+primeNumber.Count); //總共有幾個質數 } }
using System; //console會用到的 using System.Collections.Generic; //宣告list要用的 public class Program { public static void Main() { List<int> factor = new List<int>(); //因數串列 bool haveRepeat; int multiply; for(int i = 6; i <= 10000; i++) // 從最小的完美數6開始算 { int sum = 0; //每次的sum都要歸零 factor.Clear(); //每個數的因數串列不一樣,要清空 haveRepeat=false; //把重複這個布林值也要重製 for(int number = 1; number < i; number++) //最小因數從1開始 { foreach(int x in factor) //檢查是否已經有重複的因數了 if(number == x){ haveRepeat=true; break; } if(haveRepeat == true)//如果有重複的因數就停止 break; if((i % number) == 0){//找到因數了 factor.Add(number); //加到因數陣列 multiply = i/number; // 乘數 = 原本數/因數 factor.Add(multiply); //加到因數陣列 } } //Console.WriteLine(i+"的因數:"); foreach(int x in factor){ //Console.Write(x+" "); //顯示共有幾個因數 sum += x; } sum = sum- i; //Console.WriteLine("sum: " + sum); if(sum == i)//顯示全部正因數相加 減掉自己是否等於完美數 Console.WriteLine("Perfect:"+i); } } }
@copyright MRcodingRoom
觀看更多文章請點MRcoding筆記
觀看更多文章請點MRcoding筆記