2008년 08월 29일
약수구하는 프로그램
일단 결과물: divisor.exe
교수님이 자유주제로 프로그램 아무거나 만들어보라 하시길래
뭐 만들지 고민하다가 친구한테 물어봤더니 돌아온 답변이 이거.
교수님 보여드린건 이거 말고 다른거지만...
일단 코드
#include<stdio.h>
void main()
{
int num,quotient,remainder,i;
printf("숫자입력: ");
scanf("%d",&num);
printf("숫자 %d의 약수를 구합니다.\n",num);
for(i=0;i<num;i++)
{
quotient=num/(i+1);
remainder=num%(i+1);
if(remainder==0)
printf("%d",quotient);
}
printf("\n");
}
이게 맨처음 짜본거.
num으로 수를 입력받고 1부터 입력받은 수까지 나눗셈을 시행한다.
그리고 나누어 나머지가 0이 되는 수들을 화면에 출력하는 방식.
이걸 실행하면 약수가 역순으로 나온다.
그러니까 구할 약수에 10넣으면 10 5 2 1 하고 출력되는식.
처음엔 예전에 배웠던 솔트기능을 써서 작은 수 부터 출력하려했다.
그런데 수가 커져서 약수가 (할당된 배열보다) 많아지면 에러크리.
정렬기능 넣는것도 힘들었고...
그냥저냥 방치하다가 오늘 다시 손좀본 코드.
#include<stdio.h>
void main()
{
int num,quotient,remainder,i;
printf("숫자입력: ");
scanf("%d",&num);
printf("숫자 %d의 약수를 구합니다.\n",num);
for(i=0;i<num;i++)
{
quotient=num/(num-i);
remainder=num%(num-i);
if(remainder==0)
printf("%d",quotient);
}
printf("\n");
}
솔트쓴다고 값 비교를 위해 배열선언도 필요없고
원래코드에서 약간만 손좀 보면 됬던것을....
원래코드에서는 입력받은수를 1부터 나누어가는 방식이라 몫이 큰수부터 표현이 되던것.
그래서 이번엔 입력받은수로 나누고 그 수에서 1씩빼가며 나누는 방식.
그 결과 이젠 작은 수 부터 차례로 화면에 출력된다.
교수님이 자유주제로 프로그램 아무거나 만들어보라 하시길래
뭐 만들지 고민하다가 친구한테 물어봤더니 돌아온 답변이 이거.
교수님 보여드린건 이거 말고 다른거지만...
일단 코드
#include<stdio.h>
void main()
{
int num,quotient,remainder,i;
printf("숫자입력: ");
scanf("%d",&num);
printf("숫자 %d의 약수를 구합니다.\n",num);
for(i=0;i<num;i++)
{
quotient=num/(i+1);
remainder=num%(i+1);
if(remainder==0)
printf("%d",quotient);
}
printf("\n");
}
이게 맨처음 짜본거.
num으로 수를 입력받고 1부터 입력받은 수까지 나눗셈을 시행한다.
그리고 나누어 나머지가 0이 되는 수들을 화면에 출력하는 방식.
이걸 실행하면 약수가 역순으로 나온다.
그러니까 구할 약수에 10넣으면 10 5 2 1 하고 출력되는식.
처음엔 예전에 배웠던 솔트기능을 써서 작은 수 부터 출력하려했다.
그런데 수가 커져서 약수가 (할당된 배열보다) 많아지면 에러크리.
정렬기능 넣는것도 힘들었고...
그냥저냥 방치하다가 오늘 다시 손좀본 코드.
#include<stdio.h>
void main()
{
int num,quotient,remainder,i;
printf("숫자입력: ");
scanf("%d",&num);
printf("숫자 %d의 약수를 구합니다.\n",num);
for(i=0;i<num;i++)
{
quotient=num/(num-i);
remainder=num%(num-i);
if(remainder==0)
printf("%d",quotient);
}
printf("\n");
}
솔트쓴다고 값 비교를 위해 배열선언도 필요없고
원래코드에서 약간만 손좀 보면 됬던것을....
원래코드에서는 입력받은수를 1부터 나누어가는 방식이라 몫이 큰수부터 표현이 되던것.
그래서 이번엔 입력받은수로 나누고 그 수에서 1씩빼가며 나누는 방식.
그 결과 이젠 작은 수 부터 차례로 화면에 출력된다.
# by | 2008/08/29 18:45 | C Language | 트랙백 | 덧글(0)


