PAT 甲级 A1015 Reversible PrimesA

算法笔记

#include  
#include 
bool isPrime(int n) {
	if(n <= 1) return false; // 0 和 1 不是素数
	int sqr = (int)sqrt(1.0 * n); // 平方根计算函数原型为double sqrt(double); 使用前尽量把它赋值给变量 
	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 {
			// 将十进制转换成radix进制数 
			int len = 0;
			do{
				d[len++] = n % radix; // 除基取余 
				n = n / radix;
			} while(n != 0); 
			for(int i = 0; i < len; i++) { // 按逆序转换进制 
				n = n * radix + d[i]; 
			}
			if(isPrime(n) == true) printf("Yes\n");
			else printf("No\n"); 
		}
	}
	return 0;
}

 

你可能感兴趣的:(PAT甲级)