词条 | 亲密对数 |
释义 | 亲密对数就是指两个整数,除了整数本身外的其所有因子之和等于另一个整数,则这两个数为亲密对数。如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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。