C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊就是正整数x=a-b;x
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 15:45:33
![C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊就是正整数x=a-b;x](/uploads/image/z/15247833-33-3.jpg?t=C%E8%AF%AD%E8%A8%80%EF%BC%9A%E6%80%8E%E4%B9%88%E5%B0%86%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E8%A1%A8%E7%A4%BA%E6%88%90%E4%B8%A4%E4%B8%AA%E7%B4%A0%E6%95%B0%E4%B9%8B%E5%B7%AE%E7%9A%84%E5%BD%A2%E5%BC%8F%2C%E8%B0%81%E8%83%BD%E7%94%A8%E5%87%BD%E6%95%B0%E5%86%99%E4%B8%80%E4%B8%8B%E5%95%8A%E5%B0%B1%E6%98%AF%E6%AD%A3%E6%95%B4%E6%95%B0x%3Da-b%EF%BC%9Bx)
C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊就是正整数x=a-b;x
C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊
就是正整数x=a-b;x
C语言:怎么将一个整数表示成两个素数之差的形式,谁能用函数写一下啊就是正整数x=a-b;x
#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;
}