【蓝桥杯】孪生素数——十个最小的孪生素数
孪生素数
时间限制:1.0s 内存限制:256.0MB
求十对最小的孪生素数
问题描述:编写程序,求十对最小的孪生素数。如果 n 和 n+2 都是素数,则称它们是孪生素数(两个素数差值为2)。
样例输出
3和5是相邻差2的素数
5和7是相邻差2的素数
11和13是相邻差2的素数
17和19是相邻差2的素数
29和31是相邻差2的素数
41和43是相邻差2的素数
59和61是相邻差2的素数
71和73是相邻差2的素数
101和103是相邻差2的素数
107和109是相邻差2的素数
代码如下:
#include<stdio.h>
int main(){
int n,t,num=0;
int s1,s2;
int i,j,k;
for(i=2;;i++) {
t=1;
for(j=2;j<i;j++) {
if(i%j==0) t=0;//判断i是不是素数
}
if(t==1) {
//s1=i;
n=1;
//s2=s1+2;
for( k=2;k<i+2;k++)
if((i+2)%k==0) n=0;//判断i+2是不是素数
if(n==1) {
printf("%d和%d是相邻差2的素数\n",i,i+2);
num++;
}
if(num==10) break;
}
}
}
思路:首先判断一个数是否为素数,如果不是则继续向后查找,如果是则判断该数+2的数是否为素数。由此记录10对素数后跳出结束程序。