https://github.com/ljmyung1224
1929번 - 소수 구하기: 처음에는 약수가 2개이면 출력하는 방식에서 수정
#include<stdio.h>
int main()
{
int n, m;
scanf("%d %d", &n, &m);
for(int i=n;i<=m;i++)
{
if(i==1) i++;
int c=1;
for(int j=2;j*j<=i;j++) // j*j가 핵심 (j<=sqrt(i)와 동일)
{
if(i%j==0)
{
c=0;
break;
}
}
if(c==1) printf("%d\\n", i);
}
}
어떤 수의 약수는 항상 √n
이하인 수 중에 하나가 존재하므로, j * j <= n
조건으로 소수 판별을 최적화할 수 있다. (시간초과 방지)
4948번 - 베르트랑 공준: 소수 구하기 문제의 로직과 동일,
에라토스테네스의 채로도 풀이 가능(더 빠름)
2609번 - 최대공약수와 최소공배수: 유클리드 호제법 사용
int a, b, x, y, temp;
scanf("%d %d", &a, &b);
x = a;
y = b;
while (y != 0) // 유클리드 호제법
{
temp = x % y;
x = y;
y = temp;
}
printf("최대공약수(GCD): %d\\n", x);
printf("최소공배수(LCM): %d\\n", a*b/x);
a = 48, b = 18