永发信息网

C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊

答案:2  悬赏:10  手机版
解决时间 2021-12-21 14:43
  • 提问者网友:献世佛
  • 2021-12-20 16:15
C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊
就是正整数x=a-b;x
最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-12-20 16:23

#include <stdio.h>

const int max_num = 1000000;
const int max_prime = 100000;

bool mark[max_num];
int prime[max_prime];

int count = 0;

void sieve() {
for (int i = 2; i < max_num; ++i) {
if (!mark[i]) {
prime[count++] = i;
for (int j = i+i; j < max_num; j+=i) {
mark[j] = 1;
}
}
}
}

int main() {
int n;
sieve();
scanf("%d", &n);
bool flag = false;
for(int i = 0; i < count; ++i) {
int tmp = prime[i]+n;
if (tmp > prime[count-1]) break;
if ( !mark[tmp] ) {
printf("%d = %d-%d\n",n,tmp,prime[i]);
flag = true;
break;
}
}
if (!flag) {
printf("fail\n");
}
return 0;
}
再问: void sieve() 是干嘛的,解释一下
再答: sieve求素数的一种方法,叫筛法,用的比较多。 其实就是如果2是素数,那就可以标记,4,6,8...不是素数 如果3是素数,就可以标记6,9,12...不是素数 4因为被2标记过,所以直接跳过 以此类推


全部回答
  • 1楼网友:猎心人
  • 2021-12-20 16:48
哦,回答的不错
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯