[凡鸽鸽]《课内学习03》查找某个范围内的完全数

本文介绍了一种自顶向下、逐步细化的方法,通过C++代码来找出小于或等于用户输入整数lastInteger的所有完全数。程序利用了sqrt函数和循环结构,详细解释了如何判断一个数是否为完全数并列举了样例和测试结果。
摘要由CSDN通过智能技术生成

课内学习03

查找某个范围内的完全数:

自顶向下、逐步求精的程序设计方法找出小于或等于给定数lastInteger的所有“完全数”,lastInteger是从键盘提取用户输入的整数。所谓完全数,即其各因子之和正好等于本身的数。如6=1+2+3,28=1+2+4+7+14,所以6,28都是完全数。

样例:要找出小于或等于哪一个数的所有完全数?1000
在屏幕插入:小于或等于1000的所有完全数有:6  28  496
由于题目太过简单,暂时不解释,直接上代码:
#include<iostream>
#include<cmath>
using namespace std;
//判断传入的数是否为完全数 
bool complete(int i)
{
  	int sum = 0;
  	for (int j = 2; j <= sqrt(i); j++)
  	{
  		if (i%j == 0)
  		{ 
  			if (i / j != j) sum += j + (i / j);
  			else sum += j;
  		}
  	}
  	if ((sum+1) == i)return true;
  	else return false;
} 

int main()
{   system("color F0");
  double lastInteger,count = 0;
  cout << "要找出小于或等于哪一个数的所有完全数?" << endl ;
  cin >> lastInteger;
  for (int i = 2; i <= lastInteger; i++)
  {
   if(complete(i))//若传回值为真,则i为完全数 
    {
  	if(count == 0)//当存在完全数时,控制下面句子只输出一次 
  	{
  	   cout << "小于或等于"<<lastInteger<<"的所有完全数有:" ;
  	   count++;
  	}
      cout << i << " ";	
    }
  } 
  //判断小于或等于number中是否不存在完全数 
  if(count == 0)cout << "小于或等于"<<lastInteger<<"的数中没有完全数!"<<endl;
  system("pause");
  return 0;
}

测试运行结果如图:
测试1
测试2

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值