PAT A1015

54次阅读

共计 677 个字符,预计需要花费 2 分钟才能阅读完成。

可以说是常规下的素数判断;
唯一要注意的是循环读入这个点:
该句子其实就是读取到结尾结束,在文件中标识的就是缓冲区读取完毕。这里可以用来判断神马时候输入完毕;
这里还是在判别函数里要注意两点:第一:注意,0,1 不是素数;第二:判别区间应该是 2~sqrt(n),闭区间
#include<iostream>
#include<string>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
using namespace std;
bool isPrime(int n){
if(n<=1)
return false;
int sqr=(int)sqrt(1.0*n);
for(int i=2;i<=sqr;i++){
if(n%i==0)
return false;
}
return true;
}
int d[111];
int main(){
int n,radix;
while(scanf(“%d”,&n)!=EOF){
// 意思就是从缓冲区里面一直读取
if(n<0)
break;
scanf(“%d”,&radix);
if(isPrime(n)==false){
printf(“No\n”);
}else{
int index=0;
while(n!=0){
d[index++]=n%radix;
n=n/radix;
}
for(int i=0;i<index;i++){
n=n*radix+d[i];
}
if(isPrime(n)==true)
printf(“Yes\n”);
else
printf(“No\n”);
}
}
system(“pause”);
return 0;
}

正文完
 0