码迷,mamicode.com
首页 > 其他好文 > 详细

一本通1157 哥德巴赫猜想

时间:2020-01-27 21:56:18      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:简单   打表   现在   str   格式   计算机   输出   floor   int   

1.看到题首先想到的是循环,从六开始for然后到100终止,应该也不难实现,但是毕竟刚学了函数,所以考虑一下用函数怎么做(其实里面还要用循环的哈)。

2.话说计算计算多少遍都不累的,所以每个数都让计算机拆成一到它本身之间的所有数就行了,这里用两个毫不相干的变量(x,y)来实现的话,会算一万次(100*100),简化一下。

   设现在在算的这个数叫A吧,则可以用X和A-X来实现循环。

3.现在已经拆好了这两个数了,考虑一下怎么用函数判断这两个数是质数。

(1)首先比较麻烦的一种是从一到这个数试除,没有能整除的就是质数了,如此往复两遍并用&&连接起来,用布朗判断一下。但好像比较难实现哈......

(2)另一种是取这个数平方根的向下取整,然后从一到这个数试除,没有能整除的就是质数了,如此往复两遍再用&&连接起来,用布朗判断一下。

4.最后把这两个数按格式加上运算符输出就行了,不难操作。

5.题解

#include<iostream>

#include<cmath>

using namespace std;

bool sushu(int x);

int main()

{

int x;

 

int i;

 

for(x=6; x<=100; x+=2) 

 

for(i=2; i<=x/2; i++) 

 

if(sushu(i)&&sushu(x-i))

{

cout<<x<<"="<<i<<"+"<<x-i<<endl;

break;

}

return 0;

}

bool sushu(int x)

{

int i=2;

while( i<=floor(sqrt(x)) && (x%i!=0) )

i++;

if(i>floor(sqrt(x)))

return true;

return false;

}

嗯对就是这样。

6.又到了喜闻乐见的总结时间了:

   其实选这个题来写的时候,想的是想看看C++自带的函数语句中有没有判断素数的,正好可以引用一下,借此说明“函数懂得多,做题更简单”的道理。

   最后查了度娘才发现根本没有......

   这题也是个比较正常的函数+循环的题,

   这种题一般也可以直接用循环做,

   有些特殊的也可以打表(比如这个,比较难哈......)或者用C++自带的特殊函数做。

一本通1157 哥德巴赫猜想

标签:简单   打表   现在   str   格式   计算机   输出   floor   int   

原文地址:https://www.cnblogs.com/Jiangxingchen/p/12236767.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!