bool类型筛选素数

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章