十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
我的程序不行么,我回答過(guò)你一次了
創(chuàng)新互聯(lián)專(zhuān)注于奉新企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。奉新網(wǎng)站建設(shè)公司,為奉新等地區(qū)提供建站服務(wù)。全流程按需搭建網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
#include stdio.h
int is_prime(int n)
{
int i;
for(i = 2; i n ; i++)
{
if(n % i == 0)
break;
}
if(n == i)
return 1;
else
return 0;
}
int main(void)
{
int M;
int i,j;
int flag = 0;
scanf("%d",M);
for(i = M/2; i M; i++)
{
for(j = M/2;j 1; j-- )
if((is_prime(i)is_prime(j)) ((i+j) == M))
{
printf("%d %d\n",j,i);
flag = 1;
break;
}
if(flag == 1)
break;
}
return 0;
}
德國(guó)數(shù)學(xué)家哥德巴赫(Goldbach)在1725年寫(xiě)給歐拉(Euler)的信中提出了以下猜想:任何大于2的偶數(shù),均可表示為兩個(gè)素?cái)?shù)之和(俗稱(chēng)為1+1)。近三個(gè)世紀(jì)了,這一猜想既未被證明,也未被推翻(即未找到反例)。
分析:
要將整數(shù)分解成兩部分,然后判斷分解出的兩個(gè)整數(shù)是否都為素?cái)?shù)。如是,則輸出;否則,重新分解、判斷。
編寫(xiě)一個(gè)程序,在有限范圍內(nèi)(例如4~2000)驗(yàn)證哥德巴赫猜想成立。請(qǐng)注意:這只是有限的驗(yàn)證,不能作為對(duì)哥德巴赫猜想的證明。
程序如下:
#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)) /*分別判斷兩個(gè)整數(shù)是否均為素?cái)?shù)*/
if(fflag(i-n))
{printf("%d=%d+%d\n",i,n,i-n); /*如均為素?cái)?shù)則輸出*/
break;
}
if(n==i)printf("error %d\n",i);
}
}
int fflag(int i) /*判斷整數(shù)是否為素?cái)?shù)*/
{ 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*/
}
#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)行測(cè)試 */
{
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外,沒(méi)有用到其他任何的函數(shù),樓主不妨試一試。
首先更正一下,哥德巴赫猜想是不小于6的偶數(shù)……符合你要求的程序如下,可以運(yùn)行:
#includestdio.h
int isprime(int n)/*判斷n是否為素?cái)?shù)的函數(shù)*/
{
int j,x;
for(j=2;jn;j++)
if(n%j==0)
{
x=0;
break;
}else
x=1;
return(x);
}
main()
{
int n,i;
printf("請(qǐng)輸入一個(gè)不小于6的偶數(shù):\n");
scanf("%d",n);
while(n6||n%2!=0)
{
printf("您的輸入有誤,請(qǐng)重新輸入:\n");
scanf("%d",n);
}
for(i=3;i(n/2);i++)
{
if(isprime(i)!=0)
if(isprime(n-i)!=0)
printf("%d可以寫(xiě)成%d與%d之和。\n",n,i,n-i);
}
}
哇,這個(gè)問(wèn)題已經(jīng)被擱置4年了,我看到了就來(lái)答一下吧(雖然可能已經(jīng)沒(méi)人感興趣了)
首先,聽(tīng)說(shuō)哥德巴赫猜想已經(jīng)被證明了,也就是不存在不成立的情況了,(可點(diǎn)擊鏈接
)
然后是問(wèn)題本身,如果真有不符合的,可以在for(m=3;m=k-3;m++)這個(gè)循環(huán)后面判斷一下是否是循環(huán)到了盡頭,即是否mk-3,如果到了盡頭都不符合,那就可以輸出不符合了;
至于全部不符合的情況,由于前面已經(jīng)逐項(xiàng)輸出,已經(jīng)打印的事實(shí)已經(jīng)無(wú)法改變,因此就無(wú)法只輸出說(shuō)該范圍內(nèi)所有數(shù)都不符合,若真的要達(dá)到那種效果,可以把你要printf的先用fprintf函數(shù)打到臨時(shí)創(chuàng)建的文件里,然后最后根據(jù)判斷不符合的個(gè)數(shù)決定全部打印還是打印一條。總之是用文件讀寫(xiě)是一種方法。
最后呢,如果說(shuō)還要改進(jìn)的話,有兩點(diǎn)可以改進(jìn)下——1,我從老師那里聽(tīng)來(lái)判斷素?cái)?shù)的條件可以再縮小一點(diǎn),也就是文中的y=x/2,可以改為 y=sqrt(x)【因?yàn)閟qrt(x)的平方=x,如果小于y的整數(shù)不符合,那么大于y的數(shù)也不會(huì)符合】;
2,類(lèi)似于第一點(diǎn) for(m=3;m=k-3;m++)條件可改為m=k/2;【理由同1】。
呃,就是這樣了,不過(guò)4年前應(yīng)該提問(wèn)者是大一現(xiàn)在應(yīng)該畢業(yè)了吧~哈哈
您好,#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ù),是寫(xiě)的人根據(jù)函數(shù)內(nèi)容自己編寫(xiě)的。他們最后都可以在主函數(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ù)的和。