你的程序我帮你改完了,改动的地方见注释。
专注于为中小企业提供成都网站制作、网站设计、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业呈贡免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
完整的程序如下:
public class A {
public static void main(String[] args) {
for (int i = 2; i = 6; i++) {//这里把i6改成i=6 因为6是完数
int s=0; //这里移动到for-i循环中
int j=1; //这里移动到for-i循环中
while(ji){
if(i%j==0){
s=s+j;
}
j++;//这里移动到while-j循环外
}
if(s==i){
System.out.print(i+" ");
}
}
}
}
运行结果:
6
#include stdio.h
void main()
{
int i,j;
printf("1000之内的所有完数:\n");
for(i=6;i1000;i++){
int sum=0;
for(j=1;ji;j++){
if(i%j==0)
sum = sum+j;
}
if(sum==i)printf("%d,",i);
}
}
输出结果为:6,28,496
原代码中的sum 初始化的位置是错误的,导致结果不正确,正确代码请看我的回答。
扩展资料:
完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。
求1000以内的完数可以用C,C++、java和Pascal语言等,下面举例java语言实现代码。
用java编写1000以内的完数如下:
public class PerfectNumber { public static void main(String[] args) { System.out.println("1000以内的所有完数有:"); for (int i = 2; i 1000; i++) {// 遍历1000以内的所有整数 int sum = 0;// 定义和变量 for (int j = 1; j i; j++) { if (i % j == 0) {// 满足是i的因子,就累加 sum += j; } } if (sum == i) {// 满足因子之和等于i就打印该完数 System.out.print(i + " "); } } }}
import java.util.ArrayList;
public class Testa {
public static void main( String[] args ) {
ArrayListInteger arrayList = new ArrayListInteger();
for ( int i = 1; i = 1000; i++ ) {
int k=0;
for(int j=1;ji;j++){
if(i%j==0){
k+=j;
}
}
if(k==i){
arrayList.add( i );
}
}
System.out.println(arrayList);
}
}