题目要求:
请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3。
输入说明:共一组数据,为两个正整数,分别表示a和b(1<a<b<10^5)。
输出说明:指定范围内的所有完数,每个数占一行。
我写的代码:
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("请输入开始数字");
- int start = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine("请输入结束数字");
- int end = Convert.ToInt32(Console.ReadLine());
- for (int i = start; i <= end; i++)
- {
- isWanShu(i);
- }
- Console.ReadLine();
- }
- public static bool isWanShu(int num)
- {
- int s = 0;//和
- for (int i = 1; i < num; i++)
- {
- if ((num % i) == 0)
- s = s + i;
- }
- if (num == s)
- {
- string str = s.ToString() + "=";
- for (int i = 1; i < s; i++)
- {
- if ((s % i) == 0)
- {
- str = str + "+" + i.ToString();
- }
- }
- Console.Write(str + "\r\n");//输出该数所有的约数
- return true;
- }
- return false;
- }
- }
复制代码
|