標籤:除了 判斷 需要 sum 問題 其他 target false 基本
質數(prime number)又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。目前學習了判斷數字n是否為質數的2種基本方法:一、計數法根據定義,既然質數只能夠被1和他本身整除。我們可以統計出1到n範圍內的整數,能夠整除n的個數。再判斷這個個數是否等於2就可以知道n是不是質數。代碼如下: int n = int.Parse(Console.ReadLine()); ;
int sum = 0;
for (int i = 1; i <= n; i++)
{
if (n % i == 0)
{
sum += 1;
}
}
if (sum == 2)
{
Console.WriteLine("n是質數");
}
else
{
Console.WriteLine("n不是質數");
}
二、尋找法可以尋找2 到n-1範圍內所有的數去除n,如果能夠整除,這表明這個數不是質數。代碼如下: int n = int.Parse(Console.ReadLine()); ;
bool isFind = false;
for (int i = 2; i <= n - 1; i++)
{
if (n % i == 0)
{
isFind = true;
break;
}
}
if (!isFind)
{
Console.WriteLine("n是質數");
}
else
{
Console.WriteLine("n不是質數");
}思考:計數法需要判斷1到n範圍內的所有整數是夠能整除n,如果n的值比較大相應的計算量就較大。尋找法一旦找到2到n-1範圍內第一個能夠整除n的數就會跳出迴圈,但是如果要判斷出質數也要所有的都除一遍都不能整除才能得出是質數的結論,如果n的值比較大也同樣會面對計算量就較大的問題。如果一個程式中有多次判斷質數,再在這些結論的基礎上運行下一步程式,整個程式運行速度就會慢。比如哥赫巴德猜想(任何大於2的偶數都可以分解成2個質數的和)中如果輸入的數為7位元或8位元,程式明顯會慢很多才能運行完。總的來說,電腦只能按照設定的程式來執行,演算法需要人來最佳化。
C# 判斷質數的2種基本方法