质数是指在大于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整除;那后面的倍数也一定不能;
就是说具有同步性;开方后又大大减少了运行时间