C++分解素数问题
制具有如下原型的函数prime,用来判断整数n是否为素数:bool prime(int n); 而后编制主函数,任意输入一个大于4的偶数d,找出满足d=d1+d2的所有数对,其中要求d1与d2均为素数(通过调用prime来判断素数)。如偶数18可以分解为 11+7以及13+5;而偶数80可以分解为:43+37、61+19、67+13、73+7。
(一) 需求分析:
该程序的目标是用户输入一个大于4的任意的数,如果是素数,则判断输出;如果不是则把它分解为它以内的所有的素数对的和。
输入的范围是:2----2147483647,(int 型的值的范围),输出的为一对素数和。
(二) 概要分析:
该程序可以判定输入的是否为素数,如果不是素数,则把它分解为一对素数的和。可以看出应该要编写函数:bool prime(int)函数用来判断是否是素数
程序的流程图如下:
(三) 详细分析:
该程序主要的一个注意点是判断是否素数 其中,主要的是用到了for 循环和if 判断语句。素数的定义是只能被1和本身整除的正整数,2,3是最小的素数;根据定义可以写出它的for 循环语句,来判断。早getprime(int)函数中也用到了判断素数的使用方法。可以看出本题的关键之所在就是prime 函数的编写了。
(四) 调试分析:
在写prime 函数时注意判断的的准则
(五) 用户使用说明:
用户只要输入你想要判断的整数就可以了,一可以判断是否是素数,二如果是素数还可以输出它以内的素数对,是一个解决素数问题的好程序。用户可以用它来找出想要的素数对。
(优) 测试结果:
当n=12时:
当n=48时:
(七) 源程序:(见上传代码)
(八) 编程体会:
这一题的程序让我学到了怎样去分析if 语句的各种条件,并且也学到了bool函数的编制,它的返回值是true \false,它在一些程序中经常用到。因此应该要懂得若何去编制bool 型的函数。
/*************************************************
Copyright (C), 2008
File name: 软件设计普通题 12(12.cpp)
Author: 计06-1 高战
Description:
Others: ....
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
1.main() 完成各种提示与主操作输入输出
2.for 循环
3.prime 判断是否是素数
History:
<author> <time> <version > <desc>
*****************************************************/
#include<iostream>
using namespace std;
int main()
{ int a, t,m=1;
bool prime(int ); /*声明函数*/
while(m)
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com/ cout<<"分解如下"<<endl;
for(int b=1;b<(a+1)/2;b++) /*寻找素数的分解*/
{ t=a-b;
prime(b);
prime(t);
if(prime(b))
if(prime(t))
cout<<a<<"="<<b<<"+"<<t<<endl;
}
cout<<"继续是1,否0"<<endl;
cin>>m;
}
return 0;
}
bool prime(int n) /*判断素数函数的定义*/
{ for(int i=2;i<=n/2;i++)
if(n%i==0)
return false; }1826