王幼平 现代人:用涵数做,输入一个大于2的偶数,把它分解成两个素数之和。

来源:百度文库 编辑:高校问答 时间:2024/04/29 13:43:47
会电脑c语言的教教我啊

要大于等于4的偶数吧

哥德巴赫(1690-1764),德国人,1742年6月7日写信给大数学家欧拉,提出一个猜想:每一个大于2的偶数都可以表示为两个素数的和(或每一个大于或等于6的偶数都可表示为两个奇素数的和)。同年6月30日欧拉回信表示他虽不能证明此猜想,但他相信这是完全正确的。这就是著名的哥德巴赫猜想(Goldbach's Conjecture)。

#include <stdio.h>
#include <math.h>
#define LB 2 /*定义下界为2*/
#define UB 100 /*上界为100*/
void create_prime_array(int *p){
int k,i,j;
for(j=LB;j<=UB;j++){
k=sqrt(j);
for(i=2;i<=k;i++) /*i as divisor*/
if(j%i==0) break;
if(i>k) {*p=j;p++;} /*save prime j to an element of array which
pointer p pointed*/
}/*for*/
}
void main(){
int prime[500]={0};
int even;
int *p,*q;
int flag=0;
create_prime_array(prime); /*generate a prime array*/
p=q=prime;
puts("Please enter an even(>=4)");
scanf("%d",&even);
while(*p<even){
while(*q<even){
if(*p+*q==even) {flag=1;break;}
else q++;
}/*inner while*/
if(flag) break;
else {p++;q=prime;} /*drag q back*/
}

printf("%d=%d+%d",even,*p,*q);
}

这个程序有问题……大于2的数可以是3,但是3是不能分解成两个素数的和的。
你本身的题就有问题,这位朋友能做出来更有问题了。