測試結(jié)果:
創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元古交做網(wǎng)站,已為上家服務(wù),為古交各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
哥德巴赫猜想,請(qǐng)輸入一個(gè)數(shù)n:
34
猜想:34=3+31
猜想:34=5+29
猜想:34=11+23
猜想:34=17+17
猜想:34=23+11
猜想:34=29+5
猜想:34=31+3
請(qǐng)按任意鍵繼續(xù). . .
代碼:
#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;in;i++)
{
if(isPrimeNumber(i)isPrimeNumber(n-i))
{
printf("猜想:%d=%d+%d\n",n,i,n-i);
}
}
}
main()
{
int n;
printf("哥德巴赫猜想,請(qǐng)輸入一個(gè)數(shù)n:\n");
scanf("%d",n);
gotbaha(n);
system("pause");
}
說明:樓主的思路很清晰,代碼實(shí)現(xiàn)起來很順手!
1:輸入一個(gè)數(shù)n
2:哥德巴赫從2開始到n-1 一旦 i和n-i都是素?cái)?shù)那么就打印出這個(gè)拆分結(jié)果
3:判斷素?cái)?shù)函數(shù)獨(dú)立出來。
要顯示不重復(fù)的:
哥德巴赫猜想,請(qǐng)輸入一個(gè)數(shù)n:
34
猜想:34=3+31
猜想:34=5+29
猜想:34=11+23
猜想:34=17+17
請(qǐng)按任意鍵繼續(xù). . .
將int gotbaha(int n)
{
int i;
for(i=2;i=n/2;i++) 【i=n/2】即可
樓主好運(yùn)!PS:Negamax編寫!
#includestdio.h
#includemath.h
int prime(int n)
{int i;
if(n2)return 0;
for(i=2;i=sqrt(n);i++)
if(n%i==0)return 0;
return 1;
}
int main()
{
int x,i;
scanf("%d",x);
for(i=2;ix/2;i++)
if(prime(i)prime(x-i))
{
printf("%d=%d+%d\n",x,i,x-i);
return 0;
}
}
哇,這個(gè)問題已經(jīng)被擱置4年了,我看到了就來答一下吧(雖然可能已經(jīng)沒人感興趣了)
首先,聽說哥德巴赫猜想已經(jīng)被證明了,也就是不存在不成立的情況了,(可點(diǎn)擊鏈接
)
然后是問題本身,如果真有不符合的,可以在for(m=3;m=k-3;m++)這個(gè)循環(huán)后面判斷一下是否是循環(huán)到了盡頭,即是否mk-3,如果到了盡頭都不符合,那就可以輸出不符合了;
至于全部不符合的情況,由于前面已經(jīng)逐項(xiàng)輸出,已經(jīng)打印的事實(shí)已經(jīng)無法改變,因此就無法只輸出說該范圍內(nèi)所有數(shù)都不符合,若真的要達(dá)到那種效果,可以把你要printf的先用fprintf函數(shù)打到臨時(shí)創(chuàng)建的文件里,然后最后根據(jù)判斷不符合的個(gè)數(shù)決定全部打印還是打印一條??傊怯梦募x寫是一種方法。
最后呢,如果說還要改進(jìn)的話,有兩點(diǎn)可以改進(jìn)下——1,我從老師那里聽來判斷素?cái)?shù)的條件可以再縮小一點(diǎn),也就是文中的y=x/2,可以改為 y=sqrt(x)【因?yàn)閟qrt(x)的平方=x,如果小于y的整數(shù)不符合,那么大于y的數(shù)也不會(huì)符合】;
2,類似于第一點(diǎn) for(m=3;m=k-3;m++)條件可改為m=k/2;【理由同1】。
呃,就是這樣了,不過4年前應(yīng)該提問者是大一現(xiàn)在應(yīng)該畢業(yè)了吧~哈哈
#include?stdio.h
int?isPrime(int);
int?main()?{
int?n;
for?(n?=?4;?n?=?100;?n?+=?2)?{
int?i;
for?(i?=?2;?i?=?n?/?2;?i++)
if?(isPrime(i)??isPrime(n?-?i))?{
printf("%d?=?%d?+??%d\n",?n,?i,?n?-?i);
break;return?0;}
int?isPrime(int?n)?{int?i;if?(n??2)return?0;if?(n?==?2)
return?1;
else
for?(i?=?2;?i?*?i?=?n;?i++)
if?(n?%?i?==?0)
return?0;
return?1;
哥德巴赫1742年給歐拉的信中哥德巴赫提出了以下猜想:任一大于2的偶數(shù)都可寫成兩個(gè)質(zhì)數(shù)之和。但是哥德巴赫自己無法證明它,于是就寫信請(qǐng)教赫赫有名的大數(shù)學(xué)家歐拉幫忙證明,但是一直到死,歐拉也無法證明。因現(xiàn)今數(shù)學(xué)界已經(jīng)不使用“1也是素?cái)?shù)”這個(gè)約定,原初猜想的現(xiàn)代陳述為:任一大于5的整數(shù)都可寫成三個(gè)質(zhì)數(shù)之和。
歐拉在回信中也提出另一等價(jià)版本,即任一大于2的偶數(shù)都可寫成兩個(gè)質(zhì)數(shù)之和。今日常見的猜想陳述為歐拉的版本。把命題"任一充分大的偶數(shù)都可以表示成為一個(gè)素因子個(gè)數(shù)不超過a個(gè)的數(shù)與另一個(gè)素因子不超過b個(gè)的數(shù)之和"記作"a+b"。1966年陳景潤證明了"1+2"成立,即"任一充分大的偶數(shù)都可以表示成二個(gè)素?cái)?shù)的和,或是一個(gè)素?cái)?shù)和一個(gè)半素?cái)?shù)的和"。
#include
void main( )
{
int i, j, k, IsPrime;
for(i = 4; i = 100; i += 2) /*偶數(shù)i從4到100*/
{
for(j = 2; j = i / 2; j++) /* 將j從2到i/2進(jìn)行測試 */
{
for(k = 2, IsPrime = 1; (k = j / 2) IsPrime; k++) /*判斷j是否為素?cái)?shù)*/
if(j % k == 0) IsPrime = 0;
if(IsPrime) { /*如果j是素?cái)?shù)*/
for(k = 2, IsPrime = 1; (k = (i - j) / 2) IsPrime; k++) /*判斷i-j是否是素?cái)?shù)*/
if((i - j) % k == 0) IsPrime = 0;
if(IsPrime) /*如果i-j也是素?cái)?shù),則找到了i的一個(gè)解,將其輸出,下一個(gè)偶數(shù)i*/
{
printf("%d = %d + %d\t", i, j, i - j);
break;
}
}
}
}
}
除了printf與main外,沒有用到其他任何的函數(shù),樓主不妨試一試。
您好,#include "stdio.h"
#include "math.h"http://是否是素?cái)?shù)
int IsPrime(int n)
{
int i;
for (i=2;in/2;i++)
{
if(n%i==0)
return 0;
}
return 1;
}void Output(int n)
{
int i;
for(i = 2; i=n/2;++i)
{
if(IsPrime(i) IsPrime(n-i))
{
printf("%d=%d+%d\n",n,i,n-i);
break;
}
}
}
void main()
{
Output(107000);
printf("\n");
} IsPrime(int n)和Output(int n) 都是自定義函數(shù),是寫的人根據(jù)函數(shù)內(nèi)容自己編寫的。他們最后都可以在主函數(shù)中調(diào)用,其中if(IsPrime(i) IsPrime(n-i))和Output(107000) 都是他們的調(diào)用。if(IsPrime(i) IsPrime(n-i))的意思是:如果這個(gè)數(shù)i以及(n-i)都為素?cái)?shù),那么執(zhí)行下面操作。(當(dāng)IsPrime(i)為1時(shí)是素?cái)?shù),為0時(shí)為合數(shù))Output(107000) 的結(jié)果為:printf("%d=%d+%d\n",n,i,n-i);即:輸出107000這個(gè)數(shù)符合哥德巴赫猜想,他是哪兩個(gè)質(zhì)數(shù)的和。
分享題目:c語言哥德巴赫不用函數(shù),用c語言編寫哥德巴赫
網(wǎng)站URL:http://jinyejixie.com/article46/dssdseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站排名、企業(yè)網(wǎng)站制作、網(wǎng)站營銷、響應(yīng)式網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)