不墨迹,先看题目
这道题挺简单的
在键盘上输入一个数 p ,你首先要保证 p 是素数,其次 p-6 和 p+6 至少有一个是素数才行,这时候p才是“性感素数”,若 p 不是性感素数,那么只需要从 p+1 开始遍历找到最小的那个性感素数即可
#include <stdio.h>
#include <math.h>
int Is_Prime(int x)
{
if(x <= 1)
return 0;//负数和0和1都不是素数
int i = 0;//用于循环
int k = ((int)sqrt((double)x));
for (i = 2; i <= k; i++)
{
if (x % i == 0)
{
break;
}
}
if (i > k)
return 1;//是素数,返回1
else
return 0;//不是素数,返回0
}
int main()
{
int p = 0;//键盘输入的数
scanf("%d", &p);
//判断p是否是素数,以及p+6或p-6之间必须有一个是素数
//用一个函数来封装,如果是素数返回1,如果不是素数返回0
//如果N是性感素数
if (Is_Prime(p) && (Is_Prime(p - 6) || Is_Prime(p + 6)))
{
printf("Yes\n");
if (Is_Prime(p - 6) == 1)
{
printf("%d\n", (p - 6));
}
else
{
printf("%d\n", (p + 6));
}
}
//如果p不是性感素数
else
{
int i = 0;
printf("No\n");
for (i = p + 1;; i++)
{
if (Is_Prime(i) && (Is_Prime(i - 6) || Is_Prime(i + 6)))
{
printf("%d\n", i);
break;
}
}
}
return 0;
}