2017-03-13 44 views
-2

我正在寫一個代碼來打印給定範圍內的所有完美數字。 我爲我的代碼執行了空運行。但是我沒有得到預期的結果。完美數字邏輯檢查

#include<stdio.h> 
void perfect(int,int); 
int main() 
{ 
    int start,end; 

    printf("Enter range"); 
    scanf("%d%d",&start,&end); 

    perfect(start,end); 
    return 0; 
} 

void perfect(int s,int e) 
{ 
    int i=0,j=0,sum=0; 
    for(i=s;i<=e;i++) 
    { 
     for(j=1;j<i;j++) 
     { 
      if(i%j==0) //i contains the number in range 
      { 
      sum=sum+j; 
      } 
     } 

     if(sum==i) // if sum of all factors of the number is equal to the number then its perfect number 
     { 
      printf("%d",i); 

     } 

     } 

    } 

輸入:1 10 沒有輸出可見。 預期輸出:6

+0

您試過的輸入和輸出是什麼? – Lopan

+3

首先,您需要在每次迭代中重置'sum = 0'。 –

+0

@JohnnyMopp是的工作! –

回答

0

在進入外循環之前將sum初始化爲0,但在啓動內循環時不清除它。對於您正在測試的每個號碼,您需要以總數0開頭。

int i=0,j=0,sum=0; 
for(i=s;i<=e;i++) 
{ 
    sum = 0; 
    for(j=1;j<i;j++) 
    { 
     ...