天天看点

求 1-N 的所有素数 (c++实现)

要求:求 1-N 所有的素数

素数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数

思路:对于 1-N 中的某个数 k,判断 k 在 2- (k-1)中是否有数 j 满足 k%j==0,若有,则 k 不为素数;若没有则 k 为素数。

代码:

#include <iostream>

#include <vector>

using namespace std;

int main()

{

    int n;

    cin>>n;

    int num=0,k;

    vector<int> s;

    for(int i=2;i<=n;i++)

    {

        int flag=1;

        for(int j=2;j<=i-1;j++)

        {   

            k=i%j;

            if(k==0)

            {

                flag=0;

                break;

            }

        }

        if(flag==1)

        {

            s.push_back(i);

        }

    }

    num=s.size();

    int total=0,sc=0,en=num-1;

    while(sc<=en)

    {

        if((s[sc]+s[en])==n)

        {

            sc++;

            en--;

            total++;

         }

        else if((s[sc]+s[en])<n)

        {

            sc++;

        }

        else if((s[sc]+s[en])>n)

        {

            en--;

        }

    }

    cout<<total<<endl;

    return 0;

}