相親數(Amicable numbers)
相親數(Amicable numbers),又稱親和數、友愛數、友好數,指兩個正整數中,彼此的全部正因數之和(本身除外)與另一方相等。
畢達哥拉斯曾說:「朋友是你靈魂的倩影,要像220與284一樣親密。」每一對相親數都是過剩數配虧數,較小的是過剩數,較大的是虧數。
例如220與284:
- 220的全部正因數(除掉本身)相加是:1+2+4+5+10+11+20+22+44+55+110=284
- 284的全部正因數(除掉本身)相加的和是:1+2+4+71+142=220
相親數中可輕易推出,一方的全部正因數之和與另一方的全部正因數之和相等。(此敘述不可逆,不能用來判斷是否為親和數)
- 220的全部正因數之和是:1+2+4+5+10+11+20+22+44+55+110+220 = 284+220 = 504
- 284的全部正因數之和是:1+2+4+71+142+284 = 220+284 = 504
老實說…老實說…老實說...在練習這題之前,根本不知道有這種相親數..>"<
最主要是要取得真因數的和,假如有一個數A,先求出A的真因數之和B,接著算出B的真因數之和C
如果C=A,那麼A跟B就是相親數。
class Program
{
private static int GetSum(int num)
{
int sum = 1;
int limit = (int)Math.Sqrt(num); //傳回平方根
for (int i = 2; i <= limit; i++) //迴圈相除
{
if (num % i == 0) //整除
{
sum += i + num / i; // 累加求和
}
}
return sum;
}
public static void GoGo(int from, int to)
{
int count = 0;
int xcount = 0;
for (int num = from; num <= to; num++)
{
int sum1 = GetSum(num);
if (sum1 > num)
{
int sum2 = GetSum(sum1);
if (sum2 == num)
{
Console.WriteLine(string.Format("{0}和 {1}是一對相親數:", sum1, sum2));
xcount++;
}
}
}
Console.WriteLine(string.Format("在 {0}和 {1}之中,共有 {2}對相親數:", from, to, xcount));
xcount++;
}
public static void Main(string[] args)
{
GoGo(2, 100000);
Console.ReadLine();
}
}
畢達哥拉斯是畢氏定理(又稱畢達哥拉斯定理)的發現者。
數學…數學.…數學..…數學...…數學....…數學.......我搞不懂你啊~~
水滴可成涓流,涓流可成湖泊大海。
汲取累積知識,將知識堆積成常識;將常識探究成學識;將學識簡化為知識;授人自省。