親密對數

public in for(in

密對數就是指兩個整數,除了整數本身外的其所有因子之和等於另一個整數,則這兩個數為親密對數。如220和284。220的因子是1、2、4、5、10、11、20,、22、44、55、110,它們之和為284,而284的因子是1、2、4、71、142,它們之和為220,所以220與284為一對親密對數。

java程式

package net.coollf;
public class Main {
public static void main(String[] agrs){
for(INT i=0;i<2000;i++){
if(i==check(check(i))&&i!=check(i)){
System.out.println(i+":"+check(i));
}
}
}
private static int check(int i) {
int sum=1;
for(int k=2;k<Math.sqrt(i);k++){
if(i%k==0){
sum+=k;
if(k*k!=i){
sum+=(i/k);
}
}
}
return sum;
}
}

C語言程式

#include<stdio.h>
#include<math.h>
#define N 400
struct intimate{
int n;
int sum;
int flag;
};
int FactorSum(int fac) // 親密對數計算
{
int sum = 1;
int temp = 0;
int ret = sqrtf(fac);
if(fac == 1)
{
return sum = 1;
}
for(int i = 2; i <= ret; i++)
{
if(0 == fac%i)
{
temp = fac/i;
sum = sum + temp + i;
}
}
if(ret == sqrtf(fac))
{
sum = sum - ret;
}
return sum;
}
int IntimatePair(int range) //查找親密對數輸出
{
int count = 0;
struct intimate inti&#91;N&#93;;
for(int i = 0; i < N; i++)
{
inti&#91;i&#93;.n = i + 1;
inti&#91;i&#93;.sum = FactorSum(i + 1);
inti&#91;i&#93;.flag = 0;
}
for(int i = 0; i < N; i++)
printf("inti&#91;%d&#93; = %d\n", i + 1,inti&#91;i&#93;.sum);
for(int j = 0; j < N; j++)
{
if(inti&#91;j&#93;.flag == 0)
{
for(int k = j + 1; k < N; k++)
{
if(inti&#91;j&#93;.sum == inti&#91;k&#93;.n && inti&#91;j&#93;.n == inti&#91;k&#93;.sum && inti&#91;k&#93;.flag == 0)
{
inti&#91;j&#93;.flag = 1;
inti&#91;k&#93;.flag = 2;
printf("%d ,%d\n",inti&#91;j&#93;.n,inti&#91;k&#93;.n);
}
}
}
}
return count;
}
int main()
{
IntimatePair(N);
return 0;
}

相關詞條

熱門詞條

聯絡我們