站点图标 陌路寒暄

对称三位数素数

对称三位数素数

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版