请输入您要查询的百科知识:

 

词条 亲密对数
释义

亲密对数就是指两个整数,除了整数本身外的其所有因子之和等于另一个整数,则这两个数为亲密对数。如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[N];

for(int i = 0; i < N; i++)

{

inti[i].n = i + 1;

inti[i].sum = FactorSum(i + 1);

inti[i].flag = 0;

}

for(int i = 0; i < N; i++)

printf("inti[%d] = %d\", i + 1,inti[i].sum);

for(int j = 0; j < N; j++)

{

if(inti[j].flag == 0)

{

for(int k = j + 1; k < N; k++)

{

if(inti[j].sum == inti[k].n && inti[j].n == inti[k].sum && inti[k].flag == 0)

{

inti[j].flag = 1;

inti[k].flag = 2;

printf("%d ,%d\",inti[j].n,inti[k].n);

}

}

}

}

return count;

}

int main()

{

IntimatePair(N);

return 0;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/4 1:11:30