孪生素数的求法

来源:互联网 发布:但丁数据 编辑:程序博客网 时间:2024/04/30 12:59

孪生素数:

如果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;}