对称三位数素数
时间: 1ms 内存:64M
描述:
判断一个数是否为对称三位数素数。所谓“对称”是指一个数,倒过来还是该数。例如,375不是对称数,因为倒过来变成了573。
输入:
输入数据含有不多于50个的正整数(0<n<232)。
输出:
对于每个n,如果该数是对称三位数素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。
示例输入:
11 101 272
示例输出:
No
Yes
No
提示:
参考答案(内存最优[748]):
#include<stdio.h>
int main(){
int a[15]={101,131,151,181,191,313,353,373,383,727,757,787,797,919,929},i,n;
while(scanf("%d",&n)!=EOF){
for(i=0;i<15;i++)if(a[i]==n){i=20;break;}
if(i==20)printf("Yes\n");
else printf("No\n");
}
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
bool is_prime(int);
bool xy(int);
bool duichen(int);
int main()
{
int n;
while(cin>>n)
{
if(is_prime(n)&&xy(n)&&duichen(n))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
bool is_prime(int n)
{
bool flag=true;
for(int i=3;i<=n/2;i++)
{
if(n%i==0)
{
flag=false;
break;
}
}
return flag;
}
bool xy(int n)
{
bool flag=false;
if(n/100!=0&&n/1000==0)
flag=true;
return flag;
}
bool duichen(int n)
{
int k,m=0;
k=n;
bool flag=false;
while(n>0)
{
m=m*10+n%10;
n/=10;
}
if(m=k)
flag=true;
return flag;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。