#include <stdio.h>
void main()
{
int i,j;
printf("1000之內的所有完數:\n");
for(i=6;i<1000;i++){
int sum=0;
for(j=1;j<i;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 + " ");?}}?}}