인수 분해 문제

음…이것도 어딘가에서 봤던 문제다.

500개 이상의 약수를 가지는 첫번째 숫자를 찾아내는 문제.

#include

#include

int numberOfFactors(unsigned long long );

int main(){

unsigned long long i=3ll;

while(1){

printf(“i=%lld\t”,i);

if(numberOfFactors(i*(i+1ll)/2ll)>500){

printf(“%lld has more 500 divisors\n”,i*(i+1ll)/2ll);

exit(1);

}

i++;

}

return 1;

}

int numberOfFactors(unsigned long long p){

unsigned long long n,i;

n=0ll;

for(i=1ll;i<((p/2ll)+1ll);i++){
if(p%i==0ll){

// printf(“%lld,”,i);

n++;

}

}

printf(“n=%lld\tp=%lld\n”,n,p);

return n;

}

인수 분해 문제”에 대한 2개의 생각

  1. goldenbug

    저는 프로그래밍할 때 대부분 for문을 주로 애용했었는데…..(초기조건, 변화조건, 탈출조건을 보기 쉽게 작성할 수 있기 때문이었죠.)

    snowall님은 주로 while문을 사용하시는군요. ㅎㅎㅎ

    아무튼 컴퓨터의 알고리즘 문제는 반복순환문이 많다보니 for나 while 한 가지 정도만 잘 쓰면 되는 것 같아요.

    응답

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.