인수 분해 문제

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

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. 
                  snowall
                  아바타

    저는 정해진 횟수 내에 답이 나올 것이 확실하면 for를 쓰고, 될때까지 해야 하는 문제는 while을 씁니다.

    나름의 규칙은 있답니다 –;

  2. 
                 goldenbug
                 아바타

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

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

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

댓글 남기기

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