发布网友 发布时间:2022-05-17 14:39
共3个回答
热心网友 时间:2023-08-25 15:33
#include<stdio.h> int main() { int a,i,b,n; printf("There are following friendly--numbers pair smaller than 3000:\n"); for(a=1;a<3000;a++) /*穷举1000以内的全部整数*/ { for(b=0,i=1;i<=a/2;i++) /*计算数a的各因子,各因子之和存放于b*/ if(!(a%i))b+=i; /*计算b的各因子,各因子之和存于n*/ for(n=0,i=1;i<=b/2;i++) if(!(b%i))n+=i; if(n==a&&a<b) printf("%4d..%4d ",a,b); /*若n=a,则a和b是一对亲密数,输出*/ } } *运行结果 There are following friendly--numbers pair smaller than 3000: 220.. 284 1184.. 1210 2620.. 2924热心网友 时间:2023-08-25 15:34
public static void main(String args[]) {不知道是不是这样理解的。。。。
热心网友 时间:2023-08-25 15:34
注意:此函数是用java语言编写的。
/**
* @author LLJ
* @time 2020-5-5 下午10:14:44
* @Description 如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子
* (包括1,不包括B本身)之和等于A,则称整数A/B是一对亲密数。求3000以内
* 的全部亲密数。
*/
public class QinMiShu7 {
public static void main(String[] args) {
for (int i = 0; i <= 3000; i++) {
int a = yinZiHe(i);//i的因子和赋值给a;
int b = yinZiHe(a);//a的因子和赋值给b;
//分析:如果 b == i,意味着b的因子和为a,
//b的因子和为a,满足亲密数的要求
//同时,为了避免重复解,要求 a < b
if(a < b && b == i){
System.out.println(a + " 的亲密数是 " + b);
}
}
}
/**
* 计算因子和的函数
* @Time 2020-5-5 下午10:17:02
* @param n
* @return
*/
public static int yinZiHe(int n){
int sum = 0;
for (int i = 1; i <= n/2; i++) {
if(n%i == 0){
sum+=i;
}
}
return sum;
}
}
输出结果为:
220 的亲密数是 284
1184 的亲密数是 1210
2620 的亲密数是 2924