传输一个正整数,如果是玩美数返回True,否则返回false
1.玩美数除本身之外,“因子和”和本身相等的数 叫做玩美数。
例如6就是一个玩美数 因子有1.2.3.6 不计算本身的情况下和自身相等。
我们用试除法,I表示1-“Value-1” 如果Value%i余数为0说明该数是Value的的因子。
private bool 完美数(int Value)
{
int Index = 0;
if (Value <= 1)
{
return false;
}
for (int i = 1; i < Value; i++)
{
if (Value % i == 0)
{
Index += i;
}
}
return Value == Index;
}
解法2 : 根据数论一个自然数 如果有小于自身开根的因数。就有一个大于开根的因数。
通过 Value/小于开根的因数=另一个大于开根的因数。 然后再减去自身。求能求出1-n-1的因数和
private bool 完美数2(int Value)
{
if (Value <= 1)
{
return false;
}
int Index=0;
for (int i = 1; i*i<= Value; i++)
{
if (Value % i == 0)
{
Index += i;
if(i*i!= Value)
{
Index += Value / i;
}
}
}
Index -= Value;
return Index == Value;
}