孪生素数:
如果n和n+2都是素数,则称他们是孪生素数。
思路:输入m,输出两个数均不超过m的最大孪生素数,例如m=20时,其输出的答案为17、19.
代码实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <math.h>
//is_prime函数用来判断输入的数x是否是素数
int is_prime(int x)
{
int i;
int m;
assert(x >= 0);
if(x == 1)
return 0;
m = floor(sqrt(x) + 0.5);
for(i = 2; i <= m; i++)
{
if(x % i == 0)
return 0;
}
return 1;
}
int main()
{
int i, m;
printf("Please input a number:");
scanf("%d", &m);
for(i = m - 2; i >= 3; i--)
{
if(is_prime(i) && is_prime(i+2))
{
printf("%d %d\n", i, i+2);
break;
}
}
system("pause");
return 0;
}