您的位置:首页 > 其它

PAT-1015 Reversible Primes (20)

2014-09-18 21:09 351 查看
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<stack>
using namespace std;

int main()
{
int n,d;
stack<int> s;
//freopen("1015-in.txt","r",stdin);
//freopen("1015-out.txt","w",stdout);
while(true)
{
scanf("%d",&n);
if(n<0)
break;
scanf("%d",&d);

bool flag=false;
for(int i=2;i<=sqrt(n*1.0);i++)
{
if(n%i==0)
{
flag=true;
break;
}
}
if(flag)
{
printf("No\n");
continue;
}
int data=n;
while(true)
{
int mod = data%d;
s.push(mod);
data=data/d;
if(data==0)
break;
}
int exp=0;
int sum=0;
while(!s.empty())
{
int num=s.top();
sum+=num*pow(d*1.0,exp);
exp++;
s.pop();
}
//printf("%d\n",sum);
for(int i=2;i<=sqrt(sum*1.0);i++)
{
if(sum%i==0)
{
flag=true;
break;
}
}
if(flag||sum<2)
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
fclose(stdin);
fclose(stdout);

return 0;
}
给定十进制n和d,n的d进制数反转之后转换十进制数m,判定n和m是否均为素数
一个special case
2 2
2转换成二进制后变成10,反转01,再变成十进制是1,显然不是素数了。不要理所当然就认为给的数就一定是素数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: