C++ 玩转素数(前方高能哦)

               

以下均为多组输入:

1. 判断一个数是否为素数,是则输出YES,不是则输出NO

源代码:

#include <iostream>#include <cmath>using namespace std;int main(){ int i,n; int flag; while(cin>>n)    {        if(n<=0 || n==1)             //负数、01都不是素数            cout<<"NO"<<endl;        else        {            flag=0;            for(i=2;i<n;i++)            {                if(n%i==0)                {                    flag++;                    break;                }            }            if(flag==0)            {                cout<<"YES"<<endl;            }            else            {                cout<<"NO"<<endl;            }        }    }    return 0;}

程序截图:

C++ 玩转素数(前方高能哦)

2. 求m和n之间的素数(输出个数和具体的素数,包含m和n,mn均为正整数)

源代码:

#include <iostream>#include <cmath>using namespace std;int main()int i,j,k; int m,n; int a[1000],t;           //存素数 int x;                   //每x个换一行 while(cin>>m>>n)    {        cin>>x;        t=0;                 //存素数数组初始下标赋值0        for(i=m;i<=n;i++)        {            k=sqrt(i);            for(j=2;j<=k;j++)            {                if(i%j==0)                {                    break;                }            }            if(j>=k+1)            {                a[t]=i;                t++;            }        }        cout<<m<<"和"<<n<<"之间的素数个数为:"<<t<<endl;        for(i=0;i<t;i++)        {            if((i+1)%x==0)                cout<<a[i]<<endl;            else                cout<<a[i]<<" ";        }        cout<<endl;    }    return 0;}

程序截图:

C++ 玩转素数(前方高能哦)

3. 输入k(k为正整数且k<=10000),求出第k个素数

源代码:

#include <iostream>#include <cmath>using namespace std;int main()int i,j,k; int flag; int a[15000],t;           //存素数 int kk;                   //第kk个 while(cin>>kk)     {        t=0;                  //存素数数组初始下标赋值0        for(i=2;i<=110000;i++)        {            k=sqrt(i);            for(j=2;j<=k;j++)            {                if(i%j==0)                {                    flag++;                    break;                }            }            if(j>=k+1)            {                a[t]=i;                t++;            }        }        cout<<a[kk-1]<<endl;    }    return 0;}

程序截图:

C++ 玩转素数(前方高能哦)

4. 求m和n之间的回文素数(输出个数和具体的素数,包含m和n)

源代码:

#include <iostream>#include <cmath>using namespace std;int main()int i,j,k; int m,n; int a[1000],t;           //存素数 int b[1000],tt;          //存回文素数 int x;                   //每x个换一行 int turn; int originali; while(cin>>m>>n)    {        cin>>x;        t=0,tt=0;                 //两数组初始下标赋值0        for(i=m;i<=n;i++)        {            k=sqrt(i);            for(j=2;j<=k;j++)            {                if(i%j==0)                {                    break;                }            }            if(j>=k+1)            {                a[t]=i;                t++;            }        }        for(i=0;i<t;i++)        {            turn=0;            originali=a[i];            while(a[i]!=0)            {                turn=turn*10+a[i]%10;                a[i]/=10;            }            if(turn==originali)            {                b[tt]=originali;                tt++;            }        }        cout<<m<<"到"<<n<<"之间的回文素数数目为:"<<tt<<endl;        for(i=0;i<tt;i++)        {            if((i+1)%x==0)                cout<<b[i]<<endl;            else                cout<<b[i]<<" ";        }        cout<<endl;    }    return 0;}

程序截图:

C++ 玩转素数(前方高能哦)