두개의 정수를 입력받아 GCD(Greatest Common Divisor)를 구하라.
풀이 1) 반복문 이용
#include <stdio.h>
void GCD(int num1, int num2);
int main(void) {
int num1, num2;
printf("두 수를 입력하시오 : ");
scanf("%d %d", &num1, &num2);
GCD(num1, num2);
return 0;
}
void GCD(int num1, int num2) {
int a, b, remainder = 1;
if (num1 > num2)
a = num1, b = num2;
else
a = num2, b = num1;
while (remainder != 0) {
remainder = a % b;
a = b;
b = remainder;
}
printf("최대 공약수는 %d", a);
}
풀이 2) 재귀함수 이용
#include <stdio.h>
void GCD(int num1, int num2);
int main(void) {
int num1, num2;
printf("두 수를 입력하시오 : ");
scanf("%d %d", &num1, &num2);
if (num1 > num2)
GCD(num1, num2);
else
GCD(num2, num1);
return 0;
}
void GCD(int num1, int num2) {
int remainder = num1 % num2;
if (remainder != 0)
GCD(num2, remainder);
else
printf("최대 공약수는 %d", num2);
}
작은 수부터 차례로 10개의 소수를 출력하는 프로그램을 작성하라. (2, 3, 5, 7, 11, 13, 17, 19, 23, 29)
#include <stdio.h>
int PrimeNumber(int num);
int main(void) {
int i = 2, printed = 0, result;
while (printed < 10) {
result = PrimeNumber(i);
if (result == 1) {
printf("%d ", i);
printed++;
}
i++;
}
return 0;
}
int PrimeNumber(int num) {
for (int i = 2; i < num; i++){
if (num % i == 0)
return 0;
}
return 1;
}
2 3 5 7 11 13 17 19 23 29