質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
用bool類型篩選100以內的全部素數;
#include<iostream>
#include<cmath>
using namespace std;
const int n=100;
bool prime[n+1]; //定義一個bool數組
int main()
{
for(int i=0;i<=n;i++) prime{i]=ture; //給數組賦值
prime[1]=false;
for(int i=2;i<=sqrt(n);i++)
if(prime[i])
for(int j=2;j<=n/i;j++) //n/i找到i在n以內最大可乘的數如2*50
prime[i*j]=false; //一旦i是素數,它的倍數必定是合數
for(int i=2;i<=n;i++)
if(prime[i]) //輸出
cout<<i<<endl;
}
.
判斷一個數是不是素數
int n;
cin>>n; //輸入要判斷的數
double q=sqrt(n); //確定循環範圍
for(int i=2;i<=q;i++)
if(n%i==0)
{ cout<<"no";
break; }
q=sqrt(n)是因爲如果不開方將會循環到n;而開方以後n以內的數均是前面數的倍數;一旦前面的數能被整除;那後面的倍數也一定能;
#;如果不能被n整除;那後面的倍數也一定不能;
就是說具有同步性;開方後又大大減少了運行時間