A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目要求:
请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3。
输入说明:共一组数据,为两个正整数,分别表示a和b(1<a<b<10^5)。
输出说明:指定范围内的所有完数,每个数占一行。


我写的代码:
  1.   class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Console.WriteLine("请输入开始数字");
  6.             int start = Convert.ToInt32(Console.ReadLine());
  7.             Console.WriteLine("请输入结束数字");
  8.             int end = Convert.ToInt32(Console.ReadLine());
  9.             for (int i = start; i <= end; i++)
  10.             {
  11.                isWanShu(i);
  12.             }
  13.             Console.ReadLine();
  14.         }
  15.         public static bool isWanShu(int num)
  16.         {
  17.             int s = 0;//和
  18.             for (int i = 1; i < num; i++)
  19.             {
  20.                 if ((num % i) == 0)
  21.                     s = s + i;
  22.             }
  23.             if (num == s)
  24.             {
  25.                 string str = s.ToString() + "=";
  26.                 for (int i = 1; i < s; i++)
  27.                 {
  28.                     if ((s % i) == 0)
  29.                     {
  30.                         str = str + "+" + i.ToString();
  31.                     }
  32.                 }
  33.                 Console.Write(str + "\r\n");//输出该数所有的约数
  34.                 return true;
  35.             }
  36.             return false;
  37.         }
  38.     }
复制代码


评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
{:3_46:}挽
回复 使用道具 举报
for循环中结束条件没必要是 i<num,i<=num/2就够了,如果连num/2都不能够整除的话,后面的就更不可能被整除了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
continue  发表于 2014-4-26 08:22
for循环中结束条件没必要是 i

好的,谢谢指点。。。
回复 使用道具 举报
谢谢分享,学习下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马