使用函數驗證哥德巴赫猜想:任何一個不小於 6 的偶數均可表示爲兩個奇素數之和

引入

使用函數驗證哥德巴赫猜想:任何一個不小於 6 的偶數均可表示爲兩個奇素數之和。例 如 6=3+3,8=3+5,…,18=5+13。將 6~100 之間的偶數都表示成兩個素數之和,打印時 一行打印 5 組。試編寫相應程序。


分析

任何一個不小於 6 的偶數均可表示爲兩個奇素數之和。

  • 第一步:需要一個循環循環區間

  • 第二步:循環奇數,並且判斷該奇數是否爲素數,如果爲素數求相加等於該偶數兩個奇素數(可能是多個),並且每隔5個換行

      我們可以把求是否爲素數的函數獨立出來
    

代碼

#include <stdio.h>

int prime(int m);

int main(){
	
	/**
	使用函數驗證哥德巴赫猜想:任何一個不小於 6 的偶數均可表示爲兩個奇素數之和。
	例 如 6=3+3,8=3+5,…,18=5+13。將 6~100 之間的偶數都表示成兩個素數之和,打印時 一行打印 5 組。試編寫相應程序。 
	*/
	
	/**
	分析:
	任何一個不小於 6 的偶數均可表示爲兩個奇素數之和。
	需要一個循環循環區間
	循環奇數,並且判斷該奇數是否爲素數,如果爲素數求該偶數兩個奇素數,並且每隔5個換行 
	*/
	
	//這裏我們的m、n的值已經給定了,當然也可以自己輸入 
	int i, m = 6,n = 100,count;
	
		//循環區間,都是偶數所以 m+=2 
		for(; m <= n; m+=2){
			//初始化i=3,最小奇素數是3 
			for(i = 3; i <= m; i+=2){
				 //奇數不一定爲素數,所以需要判斷 
				if(prime(i) && prime(m-i)){
					printf("%d=%d+%d ", m,i,m-i);
					count++;
					if(count%5 == 0){
						printf("\n");
					}
				}	
			}	
		}
	return 0;
} 

int prime(int m){
	//只有1和它本身能被其整除,1不是素數,2是素數
	int i;
	if(m == 1){
		return 0;
	}else if(m == 2){
		return 2;
	}else{
		for(i = 2; i < m; i++){
			if(m%i == 0){
				return 0;
			}
		}
		return m;
	}	
} 

運行測試

在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章