用涵数做,输入一个大于2的偶数,把它分解成两个素数之和。
发布网友
发布时间:2022-04-25 12:02
我来回答
共3个回答
热心网友
时间:2024-11-01 12:27
要大于等于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);
}
热心网友
时间:2024-11-01 12:31
这个程序有问题……大于2的数可以是3,但是3是不能分解成两个素数的和的。
你本身的题就有问题,这位朋友能做出来更有问题了。
热心网友
时间:2024-11-01 12:29
要大于等于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);
}