用函式實現判斷素數(以及改進思路)

2021-10-25 07:26:51 字數 1205 閱讀 3751

在寫判斷素數這段**之前,我們首先要了解乙個概念什麼是素數?

素數,乙個大於1的自

然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。(規定1既不是質數也不是合數)。

通過概念,我們可以得到一些思路:

1.如果輸入數字等於1或者小於1,不是素數

2.如果輸入數字可以被2到它本身減1整除,不是素數。

**:

int isprime(int n)

for (int i = 2; i < n; i++)

} return 1; //輸入數字是素數

}

下面我們在主函式中呼叫isprime函式,輸出100-200之間的素數。

**:

#include int isprime(int n)

for (int i = 2; i < n; i++)

} return 1;//輸入數字是素數

}int main()

} system("pause");

return 0;

}

結果:

判斷方法還可以簡化。n不必被 2~n-1之間的每乙個整數去除,只需被 2 ~ √n之間的每乙個整數去除就可以了。如果 n不能被 2 ~ √n間任一整數整除,n必定是素數。

原因:因為如果 n 能被 2 ~ n-1 之間任一整數整除,其二個因子必定有乙個小於或等於√n ,另乙個大於或等於 √n。

**:

#include #include#includeint isprime(int n)

for (int i = 2; i < sqrt(n*1.0); i++)

} return 1;

}int main()

} system("pause");

return 0;

}

結果:

如果**中輸入的是sqrt(n)執行後可能會出現如下問題:

因為在c++中sqrt有三種型別,引數分別為long double,float,double。n定義的引數型別是int型,而sqrt()中應該試用double型或者float型,編譯器不知道我們要使用哪乙個sqrt型別。因此,我們要將sqrt(n)修改為sqrt(n*1.0)。

判斷素數 輸出素數以及對稱素數 C

1 判斷輸入是否是素數或者對稱素數。include include include using namespace std isprime 函式用來判斷乙個數是否是素數 bool isprime int int main int argc,char argv return true 2 輸出一定範圍...

python 判斷素數以及高效求n以內素數

1 判斷是否是素數 def isprime n if n 1 return false i 2 while i i n if n i 0 return false i 1 return true2 求n以內的素數 class solution defcountprimes self,n 初始所有乙個...

Python if判斷 函式以及列表推導式

if exp 執行語句 其中exp可以是乙個表示式或者是任意元素,當exp為真,執行縮排以後的 在python中,非0 和非null都是為真 true 的,只有0和null才為假 false if 2 1 此時的2 1為表示式,返回真 print a 因為表示式2 1為真,所以會執行print a ...