PS/Baekjoon Online Judge
[백준 11690] LCM(1, 2, ..., n) [C]
kimyoungrok
2021. 8. 30. 18:51
728x90

풀이
N이하 소수들의 가장 큰 거듭제곱들을 곱하고, 2^32로 나눈 나머지를 출력해주면 된다.
소스코드
#include <stdio.h>
#include <stdbool.h>
#define MAX 100000001
bool cNum[MAX];
int main(){
for (int i = 2; i*i < MAX; i++)
if (!cNum[i])
for (int j = 2*i; j < MAX; j += i)
cNum[j] = true;
int n;
scanf("%d", &n);
long long result = 1;
for (int i = 2; i < MAX; i++)
if (!cNum[i]){
long long temp = 1;
while (temp*i <= n) temp *= i;
result = result*temp %4294967296;
}
printf("%lld", result);
}
출처
11690번: LCM(1, 2, ..., n)
첫째 줄에 1보다 크거나 같고, n보다 작거나 같은 모든 자연수의 최소공배수를 출력한다. 정답이 매우 커질 수 있기 때문에, 232로 나눈 나머지를 출력한다.
www.acmicpc.net
728x90