⾮对称素数的和c语⾔,C++判断五位以内的对称素数
题⽬内容:判断⼀个数是否为对称且不⼤于五位数的素数。
输⼊描述:输⼊数据含有不多于50个的正整数n(0
输出描述:对于每个n,如果该数是不⼤于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列⼀⾏。
题⽬分析:
(1)判断它是否是五位以内的数,即该数是否⼩于100000.
(2)判断该数是否对称,以下三种情况成⽴:该数是⼀位数或11;该数是三位数,即该数⼤于100且⼩于1000,且该数的百位数等于个位数;该数是五位数,即该数⼤于10000且前两位等于后两位的逆序,即该数除以1000的商等于个位数与⼗位数颠倒位置。因四位数的对称数不可能是素数,所以不予考虑。
(3)判断该数是否是素数。⾸先判断该数是否是1,若是1则不是素数。然后判断该数是否是⾮2的偶数,若是则⾮素数。最后从3开始,每次加2,直到其平⽅⼤于该数,判断该数对其取余是否为0.若出现取余为0的情况,则该数⾮素数。
参考代码:
#include
#include
using namespace std;
bool isPrime(int n)
{
if(n==1) return false;
if(n!=2&&n%2==0) return false;
for(int i=3;i*i<=n;i=i+2)
{
if(n%i==0) return false;
}
return true;
}
bool isSym(int n)
{
if(n<12&&n!=10) return true;
if(n>100&&n<1000&&n/100==n%10) return true;
if(n>10000&&n/1000==n%10*10+n/10%10) return true;
return false;
}
int main(int argc,char * argv[])
c++判断素数
{
int n;
while(cin>>n)
{
cout<
}
system("pause"); return 0;
}
运⾏结果:
推荐阅读: