PAT(乙级)2019年春季考试 7-4 性感素数 (20分)
7-4 性感素数 (20分)
“性感素数”是指形如 (p, p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。(原文摘自 http://mathworld.wolfram.com/SexyPrimes.html)
现给定一个整数,请你判断其是否为一个性感素数。
输入格式:
输入在一行中给出一个正整数 N (≤)。
输出格式:
若 N 是一个性感素数,则在一行中输出 Yes
,并在第二行输出与 N 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。若 N 不是性感素数,则在一行中输出 No
,然后在第二行输出大于 N 的最小性感素数。
输入样例 1:
47
输出样例 1:
Yes
41
输入样例 2:
21
输出样例 2:
No
23
代码讲解: 此题没啥要说的就是注意,选小的那个就可以了。。。
1 #include<stdio.h> 2 int prime(int n) 3 { 4 if(n<2) 5 { 6 return 0; 7 } 8 int i; 9 for(i=2;i*i<=n;i++) 10 { 11 if(n%i==0) 12 return 0; 13 } 14 return 1; 15 16 } 17 int main() 18 { 19 int n,m; 20 scanf("%d",&n); 21 if((prime(n)&&prime(n-6))||(prime(n)&&prime(n+6))) 22 { 23 printf("Yes\n"); 24 if(prime(n-6)) 25 printf("%d\n",n-6); 26 else 27 printf("%d\n",n+6); 28 29 } 30 else 31 { 32 printf("No\n"); 33 while(++n) 34 { 35 if((prime(n)&&prime(n-6))||(prime(n)&&prime(n+6))) 36 { 37 printf("%d\n",n); 38 break; 39 } 40 } 41 } 42 return 0; 43 }