숫자를 얻는 함수를 작성해야하며 주어진 숫자보다 작은 모든 완벽한 숫자를 인쇄해야합니다. any가 없으면 해당 메시지가 인쇄됩니다. 방금 작성한 프로그램은 잘 컴파일되지만 부분적으로 만 작동합니다. 예를 들어 입력 번호가 5 인 경우이 범위 (= 5까지)에 완벽한 숫자가 없다는 메시지가 표시되지 않습니다.완벽한 숫자를 검사하는 프로그램 - 뭔가 잘못되었습니다.
누군가이 프로그램에서 잘못된 점을 설명해 주시겠습니까? 나는 어떤 도움을 주셔서 감사하겠습니다!
#include<iostream>
using namespace std;
void check (int num, int & j);
void main()
{
int num,j, count;
cout << "List all the perfect numbers less than: ";
cin >> num;
check (num, j);
}
void check (int num, int & j)
{
int i,sum, count=0;
for(j=2;j<num;num++)
{
sum=0;
for(i=1;i<j;i++)
{
if(j%i == 0)
sum += i;
}
if(sum == j)
{cout << j <<endl;
count+=1;
}
}
if (count==0)
cout<<"there are no perfect numbers"<<endl;
}
을해야한다고 생각 32 안쪽에 딱 맞는 5 완벽한 숫자가이 -bit'int'와 8 비트는 64 비트 내부에 들어 맞을 것이다. – Phylogenesis
귀하의 의견을 주셔서 감사합니다,하지만 여전히 내 문제에 대답하지 않습니다 : ( – TOM1992
왜'void check()'에 대한 참조로 초기화되지 않은'int j'를 전달합니까?'j = 2'를 체크하면 check 함수가 포함됩니다 void check() 내부에 재귀가없는 이유는 무엇입니까? –