C#编写:一个数如果恰好等于它的因子之和,这个数就称为"完数",例如 6=1+2+3 ,请编程找出 1000 以内的所有完数。
时间: 2024-10-09 07:00:45 浏览: 49
在C#中,我们可以编写一个程序来查找1000以内的所有完数。完数是指一个正整数的所有真因数(除了自身以外的因数)之和正好等于它本身。以下是实现这一功能的代码:
```csharp
using System;
class Program
{
static void Main()
{
Console.WriteLine("Solving for perfect numbers up to 1000:");
foreach (var number in FindPerfectNumbers(1000))
{
Console.WriteLine(number);
}
}
// 函数来查找指定范围内的完美数
static IEnumerable<int> FindPerfectNumbers(int limit)
{
for (int num = 1; num <= limit; num++)
{
if (IsPerfectNumber(num))
{
yield return num;
}
}
}
// 检查一个数是否是完美的
static bool IsPerfectNumber(int number)
{
int sum = 1; // 自然数1始终是其因数
for (int i = 2; i * i <= number; i++)
{
if (number % i == 0) // 如果i是因数
{
sum += i; // 将i加到总和中
if (i * i != number) // 如果i不是完全平方根,还有另一个因数
{
sum += number / i; // 添加另一个因数
}
}
}
return sum == number && number > 1; // 返回如果总数等于num并且num大于1,则它是完美数
}
}
```
阅读全文