素数、绝对素数、孪生素数
2016-11-29 22:07
323 查看
素数,我们都知道,除了一和他本身,其他都不能整除的数,即为素数,数学上又称为质数。
绝对素数呢?这里给出一个定义,就是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
接下来我们就来看一下关于绝对素数的一个小程序:
编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。
要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。
那么孪生素数又是什么呢?
孪生素数就是指相差2的素数对,例如3和5,5和7,11和13…。
存在无穷多个素数p,使得p + 2是素数。
素数对(p, p + 2)称为孪生素数。
绝对素数呢?这里给出一个定义,就是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
接下来我们就来看一下关于绝对素数的一个小程序:
编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。
要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。
int convert(int n) { int n_Inv; n_Inv=0; while (n/10!=0) { n_Inv=n_Inv*10+n%10; n=n/10; } n_Inv=n_Inv*10+n; return n_Inv; } int is_prime(int n) { int i; int sqr; sqr=(int)sqrt(n); if (n==2) { return 1; } for (i=2;i<=sqr;i++) { if (n%i==0) { return 0; } } return 1; } int main() { int n=0; int i=0; printf("Please Enter: "); scanf("%d",&n); for (i=2;i<=n;i++) { if (is_prime(i) && is_prime(convert(i))) { printf("%d\n",i); } } return 0; }
那么孪生素数又是什么呢?
孪生素数就是指相差2的素数对,例如3和5,5和7,11和13…。
存在无穷多个素数p,使得p + 2是素数。
素数对(p, p + 2)称为孪生素数。
#include <stdio.h> #include <math.h> int main() { int a,b; // 输入的两个数据范围 int i,j,k; int num=0, s; // 素数个数, 素数标志 scanf( "%d %d", &a,&b ); for( i=a;i+2<=b;i++ ) { s = 1; // 先假设i是素数 k = sqrt(i); for( j=2;j<=k;j++ ) { if( i%j == 0 ) { s = 0; // i不是素数 break; } } if( s ) { k = sqrt( i+2 ); for( j=2;j<=k;j++ ) { if( (i+2)%j == 0 ) { s = 0; // i+2不是素数 break; } } if( s ) { ++num; // i+2是素数 printf( "第%d个孪生素数[%d,%d]\n", num, i, i+2 ); } } } return 0; }
相关文章推荐
- NYOJ-孪生素数问题
- nyoj 孪生素数问题
- NYOJ 26 孪生素数问题
- 求一千以内的孪生素数
- c++:输出小于1000的所有孪生素数
- 孪生素数
- nyoj 孪生素数问题
- 孪生素数
- 算法竞赛入门经典 孪生素数
- 孪生素数问题--暴露弱点,怎么重用,让相邻两个相减
- wikioi 1434 孪生素数 水题、素数模版
- NYOJ-26 孪生素数问题
- 孪生素数
- 孪生素数 所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样。
- 南阳oj 26 孪生素数
- nyoj-26-孪生素数问题
- 孪生素数问题
- NYOJ 26 孪生素数问题
- nyoj 孪生素数问题
- 【在线等急急急!】相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。