一、實驗目的
實驗目的:通過練習,熟練掌味訓圈陳述句和函式的應用
二、實驗原理
哥德巴赫猜想:任何大于或者等于6的整數都可以寫成兩個素數之和,
要求:
1) 檢驗6-n(n>=6)之內的偶數
2) 每個偶數寫成兩個整數之和的形式 例:6=3+3 8=3+5 10=3+7 等,
三、主要資料結構和演算法
1、資料結構的設計(寫出構造的資料型別,即自己定義的結構體)
本實驗沒有用到自己定義資料型別
2、演算法分析(演算法用流程圖或自然語言描述)
先用布爾型別構造判斷是否為素數的函式,主函式內寫輸入n,在兩個for回圈內寫
6~n之內每個偶數所分成的兩個數,再呼叫布爾函式判斷那兩個數是否同時為素數,若同時為素數,則輸出每個偶數寫成兩個整數和的形式;若兩個數不全是素數,則跳出兩個for回圈輸出Wrong.
四、實驗結果及分析
1、源程式(見附錄)
2、測驗結果截圖 (寫出測驗程式的資料,至少寫三組資料,并把每組測驗結果截圖)
(1)第一組測驗資料及結果截圖
N=6

(2)第一組測驗資料及結果截圖
N=10

(3)第一組測驗資料及結果截圖
N=16

五、心得體會(自己在編程程序中對語法,寫代碼風格,實驗本身的理解,以及以后寫程式注意的問題)
1.由于本程式先寫的布爾函式構造的判斷素數的函式,為了結構簡明,將所有的變數設成全域變數
2.在不符合條件時,輸出Wrong時應跳出兩個for回圈,否則會輸出多個Wrong(本題并不會出現輸出Wrong的情況)
3.呼叫函式判斷兩個數是否同時為素數,采用&&,簡明
#include<stdio.h> #include <stdbool.h> int n,a,k,i,j; bool su(int n)//構造判斷是否為素數的布爾函式; { for(k=2;k<n;k++) if(n%k==0)break; if(k<n) return false; else return true; } int main() { scanf("%d",&n); for(i=6;i<=n;i=i+2) { for(j=3;j<n;j++) { a=i-j; if(su(a)&&su(j)) { if(j<=a) printf("%d=%d+%d\n",i,j,a); break;//在符合條件的情況下,break保證只輸出一種情況; } } } if(!su(a)&&su(j))//跳出兩個for回圈,防止輸出多個Wrong ; { printf("Wrong!"); } return 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285691.html
標籤:其他
下一篇:經典實驗--個人所得稅計算器
