1. 哥德巴赫猜想!!!! c語言
一)設計思想:<br> <br>1:為了證明一個小於都2000的偶數,能被兩個素數相加,首先求出1-2000內的所有素數,以方便相加,我們將保存在一個sushu[2000]數組中備用。<br> <br>2:從鍵盤輸入一個偶數後在核心函數中處理,尋找合適的兩個素數。<br> <br>3:輸出結果。<br> <br> 二)流程圖:<br> <br>(畫不出來改成文字了)<br> <br>1:聲明所需的變數及數組<br> 2:求出所有2000以內的素數保存在數組中備用。<br> 3:輸入一個偶數,並在素數組中尋找合適的兩個素數<br> 4:將結果輸出<br> <br> 三)難重點及解決方法:<br> 1:2000以內的素數的求出,我們用了兩個循環套來使得素數各方面條件都得到滿足後保存入數組。<br> <br>2:查找滿足的兩個素數,為了能查到匹配的兩個素數,我們也用了兩個循環套來保證一個不漏的找到。<br> <br>四)核心內容:<br> 1:求素數的內容如下:<br> <br> s=ss=0;<br> <br> sushu[0]=2;<br> <br> xiabiao=1;<br> <br> for (int s=3;s<2000;s++)<br> {<br> for (int ss=2;ss<=s;ss++)<br> {<br> if (0==s%ss) break;<br> }<br> <br> if (s==ss) sushu[xiabiao++]=s;<br> }<br> <br>////////////////////////////////////////////////////<br> <br>2:查找匹配的兩個素數的內容如下:<br> <br> for (s=0;s<xiabiao-1;s++)<br> {<br> for (ss=s+1;ss<xiabiao;ss++)<br> {<br> <br> <br> if (m_1==sushu[s]+sushu[ss])<br> <br>{ <br> m_2=sushu[s];<br> <br>m_3=sushu[ss];<br> <br>UpdateData(FALSE);<br> <br>return ;<br> }<br> }<br> <br> }<br> <br> 五)程序運行結果截圖:
2. C語言 哥德巴赫猜想
我的程序不行么,我回答過你一次了
#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;
}
3. 用c語言驗證哥德巴赫猜想
#include<stdio.h>
voidmain()
{intx,y,z;
inti,j;
for(x=4;x<100;x++,x++)//對100以內的偶數
for(y=1;y<x;y++)//y<x改成y<x/2就可以去掉8=3+58=5+3這類的重復了
{for(i=2;i<y;i++)//判斷y是否為素數
if(y%i==0)break;
if(i==y)//y是素數
{z=x-y;//x=y+z
for(j=2;j<=z;j++)//判斷z是否為素數
if(z%j==0)break;
if(j==z)//z是素數
printf("%d=%d+%d ",x,y,z);
}
}
printf(" ");
}
4. C語言程序填空 哥德巴赫猜想
1、 Prime(j)&&Prime(2*i-j)
2、n%i==0
3、1
5. c語言求哥德巴赫猜想
這個程序的邏輯是有點問題,之所以不出錯就是因為misprime的值一直是1。一直是1的原因是因為n的循環次數內,哥德巴赫猜想一直成立,成立時misprime和nmisprime都是1.
兩個嵌套的for循環是用來判斷m和n-m是否是質數,在for循環進不去的情況下:
能肯定m及n-m等於3,因為m是從3開始的,且每次加2;k從2開始,k*k小於等於m不成立,那麼m一定是3,所以for進不去時m的值一定是3,那就一定是質數,這時候應該對misprime賦值為1,而巧合的是misprime的值一直等於1,所以程序運行也就沒出異常。
正常的邏輯應該加上當for進不去時,也就是在for後面判斷k的值,如果k為2證明for循環沒進去,那麼對misprime賦值為1.
6. c語言編程填空哥德巴赫猜想
第一空:num%i==0
第二空:isPrime(a)==1或isPrime(a)
第三空:(isPrime(j)==1)&&(isPrime(a-j)==1)
7. 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
8. 驗證哥德巴赫猜想 C語言
首先更正一下,哥德巴赫猜想是不小於6的偶數……符合你要求的程序如下,可以運行:
#include<stdio.h>
int isprime(int n)/*判斷n是否為素數的函數*/
{
int j,x;
for(j=2;j<n;j++)
if(n%j==0)
{
x=0;
break;
}else
x=1;
return(x);
}
main()
{
int n,i;
printf("請輸入一個不小於6的偶數:\n");
scanf("%d",&n);
while(n<6||n%2!=0)
{
printf("您的輸入有誤,請重新輸入:\n");
scanf("%d",&n);
}
for(i=3;i<(n/2);i++)
{
if(isprime(i)!=0)
if(isprime(n-i)!=0)
printf("%d可以寫成%d與%d之和。\n",n,i,n-i);
}
}
9. 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;
}
}
10. 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;
}