“性感素数”是指形如 (p, p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。(原文摘自 http://mathworld.wolfram.com/SexyPrimes.html) 现给定一个整数,请你判断其是否为一个性感素数。 输入格式:输入在一行中给出一个正整数 N (≤108)。 输出格式:若 N 是一个性感素数,则在一行中输出 |
输入样例 1:
47
输出样例 1:
Yes
41
输入样例 2:
21
输出样例 2:
No
23
考察 : 素数判断 |
注意 : 缺少大数据测试点,不然我这要半年前写的代码肯定过不了 |
思路 : 简单素数判断 |
C
#include<stdio.h>
#include<math.h>
int op(int x);
int main(void)
{int n;scanf("%d",&n);if((op(n)&&op(n-6))||(op(n)&&op(n+6))){printf("Yes\n");if(op(n-6)) printf("%d",n-6);else printf("%d",n+6);}else{printf("No\n");for(int z=n+1;;z++){if((op(z)&&op(z-6))||(op(z)&&op(z+6))){printf("%d",z);break;}}}return 0;
}
int op(int x)
{if(x<2) return 0;if(x==2) return 1;for(int z=2;z<sqrt(x+1);z++) if(x%z==0) return 0;return 1;
}