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整除;那後面的倍數也一定不能;
就是說具有同步性;開方後又大大減少了運行時間
在這裏插入圖片描述

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