C#多重循环找出n之内的所有完数,每个完数占一行
时间: 2024-10-15 07:28:27 浏览: 58
在C#中,一个完数是指该数的所有真因数(除了自身以外的正因子)之和等于它本身的自然数。要找出一定范围内的所有完数,可以使用双重循环,外层循环遍历从1到n(包括n),内层循环则遍历从1到当前数i的平方根,检查是否存在使得两者乘积等于i的情况。以下是简单的示例代码:
```csharp
using System;
class Program
{
static void Main()
{
Console.Write("请输入一个整数n:");
int n = Convert.ToInt32(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
int sum = 0;
if (IsPerfectNumber(i))
{
Console.WriteLine($"数字 {i} 是一个完数,其真因数之和为:{sum}");
}
}
Console.ReadLine(); // 为了保持控制台窗口打开
}
// 判断是否为完数的辅助函数
static bool IsPerfectNumber(int num)
{
double sqrtNum = Math.Sqrt(num);
for (int j = 1; j <= (int)sqrtNum; j++)
{
if (num % j == 0) // 如果j是num的因子
{
sum += j; // 将因子加到总和
if (j != num / j) // 如果因子不是num除以j,则添加另一个因子
sum += num / j;
}
}
return sum == num && num > 1; // 检查sum是否等于num且num大于1(排除1)
}
}
```
阅读全文
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![text/plain](https://img-home.csdnimg.cn/images/20250102104920.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)