可以说是常规下的素数判断;唯一要注意的是循环读入这个点:该句子其实就是读取到结尾结束,在文件中标识的就是缓冲区读取完毕。这里可以用来判断神马时候输入完毕;这里还是在判别函数里要注意两点:第一:注意,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.0n); 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=nradix+d[i]; } if(isPrime(n)==true) printf(“Yes\n”); else printf(“No\n”); } } system(“pause”); return 0;}