以下均为多组输入:
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) //负数、0和1都不是素数
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;
}
程序截图:
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;
}
程序截图:
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;
}
程序截图:
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;
}
程序截图: