Ⅰ 用c語言驗證哥德巴赫猜想,能用到調用函數,簡單些的。結果是那種輸入一個偶數,輸出兩個素數。

德國數學家哥德巴赫(Goldbach)在1725年寫給歐拉(Euler)的信中提出了以下猜想:任何大於2的偶數,均可表示為兩個素數之和(俗稱為1+1)。近三個世紀了,這一猜想既未被證明,也未被推翻(即未找到反例)。
分析:
要將整數分解成兩部分,然後判斷分解出的兩個整數是否都為素數。如是,則輸出;否則,重新分解、判斷。
編寫一個程序,在有限范圍內(例如4~2000)驗證哥德巴赫猜想成立。請注意:這只是有限的驗證,不能作為對哥德巴赫猜想的證明。
程序如下:
#include "stdio.h"
#include "math.h"
main( )
{ int fflag(int i);
int i,n;
for(i=4; i<=2000; i+=2)
{for(n=2;n if(fflag(n)) /*分別判斷兩個整數是否均為素數*/
if(fflag(i-n))
{printf("%d=%d+%d\n",i,n,i-n); /*如均為素數則輸出*/
break;
}
if(n==i)printf("error %d\n",i);
}
}

int fflag(int i) /*判斷整數是否為素數*/
{ int j;
if(i<=1) return(0);
if(i==1) return(1);
if(!(i%2)) return(0); /*if no, return 0*/
for(j=3;j<=(int)(sqrt((double)i)+1);j+=2)
if(!(i%j)) return(0);
return(1); /*if yes, return 1*/
}

Ⅱ 用c語言程序驗證哥德巴赫猜想

6=3+3; 8=3+5; 10=3+7; 12=5+7; 14=3+11;
16=3+13; 18=5+13; 20=3+17; 22=3+19; 24=5+19;
26=3+23; 28=5+23; 30=7+23; 32=3+29; 34=3+31;
36=5+31; 38=7+31; 40=3+37; 42=5+37; 44=3+41;
46=3+43; 48=5+43; 50=3+47; 52=5+47; 54=7+47;
56=3+53; 58=5+53; 60=7+53; 62=3+59; 64=3+61;
66=5+61; 68=7+61; 70=3+67; 72=5+67; 74=3+71;
76=3+73; 78=5+73; 80=7+73; 82=3+79; 84=5+79;
86=3+83; 88=5+83; 90=7+83; 92=3+89; 94=5+89;
96=7+89; 98=19+79; 100=3+97;

代碼

#include<stdio.h>

int PrimeNumbers[50];

int isPrimeNumber(int n)
{
int i,flag=1;
for(i=2;i<n;i++)
{
if(n%i==0)
{
flag=0;
break;
}
}
return flag;
}

void GetPrimeNumbers()
{
int i,index=0;
PrimeNumbers[index++]=2;
for(i=3;i<100;i++)
{
if(isPrimeNumber(i)) PrimeNumbers[index++]=i;
}
PrimeNumbers[index]=0;
}

void GetFormulas()
{
int i,j,count=0;
for(i=6;i<=100;i+=2)
{
for(j=0;PrimeNumbers[j]!=0;j++)
{
if(isPrimeNumber(i-PrimeNumbers[j]))
{
printf("%d=%d+%d; ",i,PrimeNumbers[j],i-PrimeNumbers[j]);
if(++count==5)
{
printf("\n");
count=0;
}
break;
}
}
}
}

int main()
{
GetPrimeNumbers();
GetFormulas();
return 0;
}

Ⅲ 用C語言 編程 驗證哥德巴赫猜想 詳細請入

#include<stdio.h>

int prime(int n)

{for(int i=2;i*i<=n;i++)

if(n%i==0)return 0;

return n>1;

}

int main()

{int x,i;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if(prime(i)&&prime(x-i))

{printf("%d+%d=%d ",i,x-i,x);

return 0;

}

}

Ⅳ 驗證哥德巴赫猜想 C語言

if(c>sqrt(b))
C>根號b是為什麼?
這個回答第一個網友解釋的很好。我覺得兩次判斷是否是素數有點麻煩,你可以寫一個判斷素數的函數。
#include
<stdio.h>
#include
<math.h>
int
isprime(int
m)
{
int
n,i,s;
n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0)
break;
if(i>=n+1)
s=1;
else
s=0;
return
s;
}
void
main()
{
int
a,b,d;
scanf("%d",&a);
for(b=3;b<=a;b+=2)
{
if(isprime(b)==1)
{
d=a-b;
if(isprime(d)==1)
{
printf("%d=%d+%d\n",a,b,d);
break;
}
}
}
}
額,發現for(b=3;b<=a/2;b+=2)
這里錯了,應該是b<=a.
你可以試試。

Ⅳ c語言證明哥德巴赫猜想

你這程序的邏輯思路不清晰,你試試如下程序:
#include <stdio.h>
#include <math.h>
int IsPrime(int n) {
int i, s;
for(i = 2, s = sqrt(n); i <= s; i++)
if(n % i == 0) return 0;
return 1;
}
void main( ) {
int m, x;
printf("輸入一個大偶數: ");
scanf("%d", &m);
x = 3;
while(x <= m / 2) {
if(IsPrime(x) && IsPrime(m - x)) {
printf("%d = %d + %d\n", m, x, m - x);
break;
}
x += 2;
}
}

Ⅵ C語言 驗證哥德巴赫猜想

#include "stdio.h"

#include "math.h"

int prime(int x)

{

int i;

for(i=2;i<=sqrt(x);i++)

if(x%i==0)return 0;

return 1;

}

int main(void)

{

int count, i, j, k, m, n, number;

scanf("%d%d", &m, &n);

if(m % 2 != 0) m = m + 1;

if(m >= 6){

for(i=m;i<=n;i+=2)

{for(j=3;j<i/2;j+=2)

if(prime(j)&&prime(i-j))

{printf("%d=%d+%d ",i,j,i-j); break;}

}

}

}

Ⅶ 如何用C語言編程驗證哥德巴赫猜想

#include <stdio.h>
void main( )
{
int i, j, k, IsPrime;
for(i = 4; i <= 100; i += 2) /*偶數i從4到100*/
{
for(j = 2; j <= i / 2; j++) /* 將j從2到i/2進行測試 */
{
for(k = 2, IsPrime = 1; (k <= j / 2) && IsPrime; k++) /*判斷j是否為素數*/
if(j % k == 0) IsPrime = 0;
if(IsPrime) { /*如果j是素數*/
for(k = 2, IsPrime = 1; (k <= (i - j) / 2) && IsPrime; k++) /*判斷i-j是否是素數*/
if((i - j) % k == 0) IsPrime = 0;
if(IsPrime) /*如果i-j也是素數,則找到了i的一個解,將其輸出,下一個偶數i*/
{
printf("%d = %d + %d\t", i, j, i - j);
break;
}
}
}
}
}
除了printf與main外,沒有用到其他任何的函數,樓主不妨試一試。

Ⅷ c語言驗證哥德巴赫猜想

按照你的要求編寫的驗證哥德巴赫猜想的C語言程序如下

#include<stdio.h>

intisPrime(longn){

longi;

for(i=2;i<n;i++)

if(n%i==0)

break;

if(i==n)

return1;

else

return0;

}

intmain(){

intrepeat,i;

longn,j;

scanf("%d",&repeat);

for(i=1;i<=repeat;i++){

scanf("%ld",&n);

for(j=1;j<=n/2;j++){

if(isPrime(j)==1&&isPrime(n-j)==1){

printf("%ld%ld ",j,n-j);

break;

}

}

}

return0;

}


運行結果
輸入2
輸入10
輸出37
輸入20
輸出317

Ⅸ 【c語言】如何驗證哥德巴赫猜想

測試結果:
哥德巴赫猜想,請輸入一個數n:
34
猜想:34=3+31
猜想:34=5+29
猜想:34=11+23
猜想:34=17+17
猜想:34=23+11
猜想:34=29+5
猜想:34=31+3
請按任意鍵繼續. . .

代碼:
#include "stdio.h"
#include "stdlib.h"

int isPrimeNumber(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)
return 0;
}
return 1;
}

int gotbaha(int n)
{
int i;
for(i=2;i<n;i++)
{
if(isPrimeNumber(i)&&isPrimeNumber(n-i))
{
printf("猜想:%d=%d+%d\n",n,i,n-i);
}
}
}

main()
{
int n;
printf("哥德巴赫猜想,請輸入一個數n:\n");
scanf("%d",&n);
gotbaha(n);
system("pause");
}

說明:樓主的思路很清晰,代碼實現起來很順手!
1:輸入一個數n
2:哥德巴赫從2開始到n-1 一旦 i和n-i都是素數那麼就列印出這個拆分結果
3:判斷素數函數獨立出來。

要顯示不重復的:
哥德巴赫猜想,請輸入一個數n:
34
猜想:34=3+31
猜想:34=5+29
猜想:34=11+23
猜想:34=17+17
請按任意鍵繼續. . .

將int gotbaha(int n)
{
int i;
for(i=2;i<=n/2;i++) 【i<=n/2】即可

樓主好運!PS:Negamax編寫!