⑴ 用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語言編程哥德巴赫猜想
#include
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語言 驗證哥德巴赫猜想:一個大偶數可以分解成兩個素數之和。
你好,我給在幾個地方加了幾個{}就可以了,代碼:
#include<stdio.h>
#include<math.h>
main()
{
intn,x,y,a,b,i,j;
for(n=96;n<=100;n+=2)
{
for(x=3;x<n/2;x+=2)
{漏碧//第一個括弧
a=sqrt(x);
for(i=2;i<=a;i++)
if(x%i==0)break;
if(i>冊改=a+1)
{//第二個括弧它必須保證找到第一個素數,才能執行下面
y=n-x;//找第二個素數
b=sqrt(y);
for(j=2;j<=b;j++)
if(y%j==0)break;
if(j>=b+1)
printf("%d=%d+%d ",n,x,y);
}
}返姿舉//第一個括弧結束
}
}
⑸ C語言編程哥德巴赫猜想
#include<stdio.h>
#include<math.h>拆亂橡
int is(int x) //判斷一個數是否為陪敬素數,是素數返回1,否則返回0
{
int n;
n=sqrt(x);
for(int i=2;i<=n;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
int num1,num2;
int s;
for(int i=1000;i<2000;i+=2)
{
num1=2;
s=i/旅旁2;
while(num1<=s)
{
if(is(num1)) //如果第一個數是素數
{
num2=i-num1;
if(is(num2))
break;
}
num1++;
}
if(num1==s+1)
{
printf("%d is mot Ok!\n",i);
break;
}
}
if(i==2000)
printf("all numbers are Ok!\n");
return 1;
}
⑹ 怎麼用C語言編程驗證哥德巴赫猜想
哇,這個問題已經被擱置4年了,我看到了就來答一下吧(雖然可能已經沒人感興趣了)
首先,聽說哥德巴赫猜想已經被證明了,也就是不存在不成立的情況了,(可點擊鏈接
http://tieba..com/p/542673904)
然後是問題本身,如果真有不符合的,可以在for(m=3;m<=k-3;m++)這個循環後面判斷一下是否是循環到了盡頭,即是否m>k-3,如果到了盡頭都不符合,那就可以輸出不符合了;
至於全部不符合的情況,由於前面已經逐項輸出,已經列印的事實已經無法改變,因此就無法只輸出說該范圍內所有數都不符合,若真的要達到那種效果,可以把你要printf的先用fprintf函數打到臨時創建的文件里,然後最後根據判斷不符合的個數決定全部列印還是列印一條。總之是用文件讀寫是一種方法。
最後呢,如果說還要改進的話,有兩點可以改進下——1,我從老師那裡聽來判斷素數的條件可以再縮小一點,也就是文中的y=x/2,可以改為 y=sqrt(x)【因為sqrt(x)的平方=x,如果小於y的整數不符合,那麼大於y的數也不會符合】;
2,類似於第一點 for(m=3;m<=k-3;m++)條件可改為m<=k/2;【理由同1】。
呃,就是這樣了,不過4年前應該提問者是大一現在應該畢業了吧~哈哈
⑺ C語言 求哥德巴赫猜想
//滿意請採納
#include"stdio.h"
#include"math.h"
intprime(inti);
intmain(){
intcount=0,i,m,n,number;
m=6;
n=100;
if(m%2!=0)m=m+1;
if(m>=6){
while(m<=n){
for(i=2;i<n/2;i++)
if(prime(i)!=0&&prime(m-i)!=0){
printf("%d=%d+%d",m,i,m-i);
count++;
if(count%5==0)
printf(" ");
break;
}
m=m+2;
}
}
}
intprime(intn){
inti;
for(i=2;i<=n/2;i++){
if(n%i==0){
return0;
break;
}
}
if(i>n/2)
return1;
}