10:素数对
总时间限制:
1000ms
内存限制:
65536kB
描述
两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。
输入
一个正整数n。1 <= n <= 10000。
输出
所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
样例输入
100
样例输出
3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73
思路,先进行素数判断,将素数储存在一个数组中,因为开头素数为2,3,5;3、5才开始符合条件,之后根据素数个数判断是否为empty,如果小于3,就输出empty,否则,根据数组中后一个数减去前一个数看是否为2,并输出他们。
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,k=0;
int a[10000];
scanf("%d",&n);
for(i=2;i<=n;i++){
int m=1;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
m=0;
break;
}
}
if(m==1){
a[k++]=i;
}
}
if(k<3){
printf("empty");
}
else{
for(i=0;i<k;i++){
if(a[i+1]-a[i]==2){
printf("%d %d\n",a[i],a[i+1]);
}
}
}
return 0;
}
(求关注,求点赞,你们的支持是我最大的动力)