2 * 28 = 1 + 2 + 4 + 7 + 14 + 28
import java.util.ArrayList;
// 求解完美数
public class PerfectNumber {
// 传入一个值,求解至少多少个完美数
public static int[] lessThan(int number) {
int[] primes = Prime.findPrimes(number);
ArrayList list = new ArrayList();
for(int i = 1; i <= number; i++) {
int[] factors = factor(primes, i);
if(i == fsum(factors))
list.add(new Integer(i));
}
int[] p = new int[list.size()];
Object[] objs = list.toArray();
for(int i = 0; i < p.length; i++) {
p[i] = ((Integer) objs[i]).intValue();
}
return p;
}
// 分解因式
private static int[] factor(int[] primes, int number) {
int[] frecord = new int[number];
int k = 0;
for(int i = 0; Math.pow(primes[i], 2) <= number;) {
if(number % primes[i] == 0) {
frecord[k] = primes[i];
k++;
number /= primes[i];
}
else
i++;
}
frecord[k] = number;
return frecord;
}
// 因式求和
private static int fsum(int[] farr) {
int i, r, s, q;
i = 0;
r = 1;
s = 1;
q = 1;
while(i < farr.length) {
do {
r *= farr[i];
q += r;
i++;
} while(i < farr.length - 1 &&
farr[i-1] == farr[i]);
s *= q;
r = 1;
q = 1;
}
return s / 2;
}
public static void main(String[] args) {
int[] pn = PerfectNumber.lessThan(1000);
for(int i = 0; i < pn.length; i++) {
System.out.print(pn[i] + " ");
}
System.out.println();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有