c語言素數篩選(素數判定)

//方法一 定義
bool isPrime_1(int num)
{
    int tmp=num-1;
    for(int i=2;i<=tmp;i++)
    if(num%i==0)
    return 0;
    return 1;
}
//方法二 定義
bool isPrime_2(int num)
{
    int tmp=sqrt(num)+0.5;
    for(int i=2;i<tmp;i++)
        if(num%i==0)
        return 0;
    return 1;
}
//方法三 素數在6的左右
bool isPrime_3(int num)
{
    if(num==2||num==3)
        return 1;
    if(num%6!=1||num%6!=5)
        return 0;
    int tmp=sqrt(num);
    for(int i=5;i<tmp;i+=6)
        if(num%i==0||num%(i+2)==0)
        return 0;
}
//方法四 埃拉篩法
#include<iostream>
#include<cmath>
using namespace std;
bool p[100001];
int n,sn,tot;
int main()
{
    cin>>n;
    sn=sqrt(n+0.5);
    for(int i=2;i<=n;i++) p[i]=true;
    for(int i=2;i<=sn;i++)if(p[i])for(int j=i*i;j<n;j+=i)p[j]=false;
    for(int i=2;i<=n;i++)if(p[i]) tot++;
    cout<<tot<<endl;
    return 0;
}

//方法五 歐拉篩選(線性篩選)

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 490
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章