clipboard.png
可以说是常规下的素数判断;

唯一要注意的是循环读入这个点:

clipboard.png
该句子其实就是读取到结尾结束,在文件中标识的就是缓冲区读取完毕。这里可以用来判断神马时候输入完毕;

这里还是在判别函数里要注意两点:
第一:注意,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;
}

宋霖轩
16 声望4 粉丝

克哈的霓虹都为我闪烁