本來不打算發博客呢,但是在小老弟的督促下還是決定要堅持!要堅持!
今天比較忙,沒抽出時間寫新的題目,這里就拿一道我計算機專業的小寶貝兒的題來說說吧!
【問題描述】驗證哥德巴赫猜想:任何一個大于6的偶數均可表示兩個素數之和,例如,6=3+3,8=3+5,…,18=5+13,要求將6-100之間的偶數都表示為兩個偶數之和,輸出時一行輸出五組,
【輸入形式】無輸入
【輸出形式】按從小到大,每組五行,每組的格式為:四位=2位+2位,等號和加號兩側無空格,
話說過來,這還是我第一次用C++寫一個完整的程式,居然不是Hello World,哈哈哈!這個問題呢寫完之后成就感也挺大的,是挺有趣的一道編程題,這道題可以看作是幾個小問題合起來的一個大問題,可能看題目感覺很慌張,但是一句一看的話發現還是相對輕松的,
C++寫法
#include<iostream>
#include <iomanip>
using namespace std;
int prime(int m);
int main()
{
int i, j, k, count = 0;
for (i = 6; i <= 100; i += 2) //輪詢大于六小于一百的偶數
{
for (j = 3; j <= i / 2; j++) //從3開始看有沒有i的因數,i/2和sqrt(2)的性質類似
{
if (prime(j) && prime(i - j))//方法呼叫,i=j+i-j
{
cout <<setw(4)<<setfill('0')<<i<<'='<<setw(2)<<setfill('0')<<i-j<<'+'<<setw(2)<<setfill('0')<<j<<" ";//這些C++的輸出我都是現搜現用的十分感人!!!
count++;
if (count == 5) //格式輸出,控制每組五行
{
cout <<'\n';
count = 0;
}
break;
}
}
}
return 0;
}
int prime(int m)//宣告判斷是否為素數的方法
{
int i;
for (i = 2; i <= m - 1; i++)
{
if (m % i == 0)
return 0;//呼叫時值為假
}
return 1;//呼叫時值為真
}
C寫法
#include<stdio.h>
#include<math.h>
int prime(int m);
int main()
{
int i, j, k, count = 0;
for (i = 6; i <= 100; i += 2)
{
for (j = 3; j <= sqrt(i); j++)
{
if (prime(j) && prime(i - j))
{
printf("%4d=%02d+%2d", i,j,i-j);//為了趕進度我直接把0補上去了,馬上熄燈斷網了,我明天回來改
count++;
if (count == 5)
{
printf("\n");
count = 0;
}
break;
}
}
}
return 0;
}
int prime(int m)
{
int i;
for (i = 2; i <= m - 1; i++)
{
if (m % i == 0)
return 0;
}
return 1;
}
11.20補充:
C語言中0的補位
%0nd
C++中0的補位
setfill("0")
今天只能匆忙結束了,我明天會回來補充一些東西,
Bingo!
今天是忙碌的一天呢!
我最侄訓是沒能來得及寫完他,
已經是第二天了…
我一定會回來補一種不用呼叫方法的解法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225854.html
標籤:其他
上一篇:藍橋杯單片機必備知識 ------ (2)關閉LED燈,BUZZ以及零碎知識
下一篇:我和我的智能車
