关于网友提出的“ 为什么不能出结果?”问题疑问,本网通过在网上对“ 为什么不能出结果?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 为什么不能出结果?
描述: 如果一个数的所有真因子(包括1,但不包括这个数本身)之和正好等于这个数本身,则称此数为完数。例如:
6=1*2*3;而1+2+3=6;
28=1*4*7=1*2*14,而1+2+4+7+14=28。
如何确定完数,欧几里得发现,只要2^n-1是一个素数,则m=2^(n-1)(2^n-1)一定是一个完数。编写一个程序找出最小的5个完数。
#include
#include
using namespace std;
bool DecidePrime(unsigned int number);
unsigned int power(unsigned int x,unsigned int y);
void main()
{
unsigned int perfect_number,
num,temp;
short int n(2),
counter(0);
while(counter<5);
{
temp=power(2,n);
num=temp-1;
if(DecidePrime(num))
{
perfect_number=temp/2*num;
cout<<"n="<<","<<"完数="<<><>
counter++;
}
n++;
}
}
unsigned int power(unsigned int x,unsigned int y)
{
unsigned int mul(1);
for(int I=1;I<=y;I++)
mul*=x;
return mul;
}
bool DecidePrime(unsigned int number)
{
unsigned int i,k;
k=sqrtf(number);
for(i=2;i<=k;i++)
{
if(number%i==0)
break;
}
if(i>=k+1)
return true;
else
return false;
}
解决方案1: ...你看下 while(counter<5);
后面多了个 分号。。。
去掉应该可以了。
以上介绍了“ 为什么不能出结果?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2261193.html