鄭州輕工業(yè)大學(xué)oj題解(c語言)1093: 驗證哥德巴赫猜想(函數(shù)專題)

今天早上看到有個朋友說想讓我寫一下1093題,正好也有快一周沒寫過題解了,趁今晚還有些時間就把這篇一直沒動筆的題解完成了吧。


image.png

1093: 驗證哥德巴赫猜想

  • 題目描述
    哥德巴赫猜想大家都知道一點吧。我們現(xiàn)在不是想證明這個結(jié)論,而是對于任給的一個不小于6的偶數(shù),來尋找和等于該偶數(shù)的所有素數(shù)對。做好了這件實事,就能說明這個猜想是成立的。
    要求程序定義一個prime()函數(shù)和一個main()函數(shù),prime()函數(shù)判斷一個整數(shù)n是否是素數(shù),其余功能在main()函數(shù)中實現(xiàn)。
    int prime(int n)
    {
    //判斷n是否為素數(shù), 若n為素數(shù),本函數(shù)返回1,否則返回0
    }
    對于C/C++代碼的提交,本題要求必須通過定義prime函數(shù)和main函數(shù)實現(xiàn),否則,提交編譯錯誤,要提交完整的程序。
  • 輸入
    一個偶數(shù)M (M是6到1000000之間的一個偶數(shù)).
  • 輸出
    輸出和等于該偶數(shù)的所有素數(shù)對a和b,按a遞增的順序輸出,(a,b)和(b,a)被視為同一個素數(shù)對。
  • 參考代碼:
#include<bits/stdc++.h>
using namespace std;
int prime(int i) 
{
      int q=0,c,j; 
      c=(int)sqrt(i); 
    for(j=2;j<=c;j++){
       if(i%j==0){
        q=1;} 
 } 
return q; 
} 
int main() 
{ 
   int num; 
   int i,k,w,e; 
    scanf("%d",&num); 
   for(i=3;i<=num/2;i=i+2){  
     w=0; 
     e=0; // w和e做判斷素數(shù)用
     w=prime(i); 
     if(w==0) 
       { 
          k=num-i; 
          e=prime(k); 
       } 
       if(w==0 && e==0) 
       printf("%d %d\n",i,k); 
  } 
} 

代碼解析:
其實一看題目,就會讓人覺得是很復(fù)雜的題目,所以對待這種題目,我們要學(xué)會分段讀題目和分段寫代碼;
下面我介紹一下我是怎么做這種復(fù)雜的題目的:

  1. 看輸入輸出。輸入是一個整數(shù),輸出是兩個整數(shù),這是肯定要寫進(jìn)main函數(shù)里面的,我們可以先寫著。
  2. 看函數(shù)要求。題目要求我們寫一個判斷一個整數(shù)n是否是素數(shù)的函數(shù)。這個應(yīng)該不難吧,素數(shù)其實就是質(zhì)數(shù),如果還覺得難的,應(yīng)該是不懂質(zhì)數(shù)是啥,可以先看一下百度百科→質(zhì)數(shù),大概就是判斷一個數(shù)能否被比它小的數(shù)整除。我這里寫的是判斷不是質(zhì)數(shù)的函數(shù)。
  3. 下面看main函數(shù)怎么寫,main函數(shù)要完成這個尋找和等于該偶數(shù)的所有素數(shù)對,也就是兩個素數(shù)相加等于這個偶數(shù)了,就說明這兩個素數(shù)符合要求了,輸出這兩個素數(shù)就可以了。

下面我們看回代碼

prime函數(shù): c=(int)sqrt(i); sqrt是求平方根的函數(shù),在前面加int是為了讓它變成整數(shù),方便用來循環(huán)。循環(huán)不一定要這么寫,這個我也忘了當(dāng)時我是怎么想的了,自行理解一下吧,寫出來可能比較好理解。最后判斷不為素數(shù)就返回1,為素數(shù)就返回0.
main函數(shù):這個倒沒什么好說的,判斷返回的值是多少,最后兩個都為0則說明都為符合要求的素數(shù),輸出即可。

今天比較累,題解寫的不是很好,還有什么問題最好還是在評論區(qū)留言吧,我明天起來再行解決。


另外,那個搶紅包的腳本現(xiàn)在已經(jīng)完成的差不多了,還差一步很關(guān)鍵的優(yōu)化界面和打包腳本,應(yīng)該能很快弄成可以下載的版本。屆時找個機會無償上傳百度網(wǎng)盤給大家吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容