你的程序我?guī)湍愀耐炅?,改?dòng)的地方見注釋。
專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)呈貢免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
完整的程序如下:
public?class?A?{
public?static?void?main(String[]?args)?{
for?(int?i?=?2;?i?=?6;?i++)?{//這里把i6改成i=6?因?yàn)?是完數(shù)???
int?s=0;?//這里移動(dòng)到for-i循環(huán)中?
int?j=1;?//這里移動(dòng)到for-i循環(huán)中?
while(ji){????
if(i%j==0){?????
s=s+j;?????
}
j++;//這里移動(dòng)到while-j循環(huán)外?
}???
if(s==i){????
System.out.print(i+"?");???
}??
}
}
}
運(yùn)行結(jié)果:
6
#include stdio.h
void main()
{
int i,j;
printf("1000之內(nèi)的所有完數(shù):\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);
}
}
輸出結(jié)果為:6,28,496
原代碼中的sum 初始化的位置是錯(cuò)誤的,導(dǎo)致結(jié)果不正確,正確代碼請(qǐng)看我的回答。
擴(kuò)展資料:
完數(shù),一般指完全數(shù),一個(gè)自然數(shù)如果它的所有真因子(即除了自身以外的約數(shù))的和等于該數(shù),那么這個(gè)數(shù)就是完全數(shù),如:6的真因子有1 、2、3,6=1+2+3,所以6是一個(gè)完全數(shù)。
求1000以內(nèi)的完數(shù)可以用C,C++、java和Pascal語(yǔ)言等,下面舉例java語(yǔ)言實(shí)現(xiàn)代碼。
用java編寫1000以內(nèi)的完數(shù)如下:
public class PerfectNumber {????public static void main(String[] args) {????System.out.println("1000以內(nèi)的所有完數(shù)有:");????for (int i = 2; i 1000; i++) {// 遍歷1000以內(nèi)的所有整數(shù)??????int sum = 0;// 定義和變量??????for (int j = 1; j i; j++) {????????if (i % j == 0) {// 滿足是i的因子,就累加??????????sum += j;????????}??????}??????if (sum == i) {// 滿足因子之和等于i就打印該完數(shù)????????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);
}
}