public class PerfectNumber { private void calcPerfectNumber(int maxNumber) { int sum = 0; for (int i = 1; i <= maxNumber; i++) { sum = 0; for (int m = 1; m < i; m++) { if (i % m == 0) { sum += m; } } if (sum == i) { System.out.print(i + " is a perfect number and it's factors are: "); for (int m = 1; m < i; m++) { if (i % m == 0) { System.out.print(m + " "); } if(m == i - 1){ System.out.println(); } } } } } public static void main(String arg[]) { PerfectNumber calc = new PerfectNumber(); calc.calcPerfectNumber(1000); } }
int j = 0;
wanShu[j++] = 1;
int []zhiShu = new int[1000];
int m = 0;
zhiShu[m++] = 1;
for(int i=2; i<=1000; i++){
int temp = 0;//因子和
int temp1;//用来判断是否能被整除
int temp2 = i;//用来存余数
for(int k=m-1; k>=0; k--){//除数从比i小的数质开始
temp1 = temp2 % zhiShu[k];
if(temp1 == 0){//如果能整除
if(k == 0){//如果除数推进到1
if(temp == 0){zhiShu[m++] = i;break;}//除1外了因子和为0,表示i是质数
}
temp2 = temp2 / zhiShu[k];//获得余数
if(temp2 > zhiShu[k]){k++;}//用来保证除数是可以用来除的数中最大的
temp += zhiShu[k];求因子和
}
}
if(i == temp){wanShu[j++] = i;}//求得完数
}
class Example6
{public static void main(String args[])
{int count,i,j;
for(i=1;i<=1000;i++)
{count=1;
for(j=2;j<=i/2;j++)
{if(i%j==0)
count=count+j;
}
if(i==count)
System.out.println("i="+i);
}
}
}
public class PerfectNumber { private void calcPerfectNumber(int maxNumber) {
int sum = 0; for (int i = 1; i <= maxNumber; i++) {
sum = 0;
for (int m = 1; m < i; m++) {
if (i % m == 0) {
sum += m; }
}
if (sum == i) {
System.out.print(i + " is a perfect number and it's factors are: ");
for (int m = 1; m < i; m++) {
if (i % m == 0) {
System.out.print(m + " ");
}
if(m == i - 1){
System.out.println();
}
}
}
}
} public static void main(String arg[]) {
PerfectNumber calc = new PerfectNumber();
calc.calcPerfectNumber(1000);
}
}
public class TestNum {
public static void main(String [] args){
for(int i=1;i<1000;i++){
int s=0;
for(int a=1;a<i;a++){
if(i%a==0){
s=s+a;
}
}
if(s==i){
System.out.println("i:"+i);
}
}
}
}
其实主要是这类题目,我不知道怎么去搜答案 还是Thanks