#include <cmath>
합성수에서 N에서 1을 제외한 가장 작은 약수는 √N 이하이다.
즉, 2부터 √N까지의 수로 나누어지지 않으면 소수이다.
// 소수 판별 알고리즘
bool isPrime(int n) {
if(n == 1) return false;
for(int i = 2; i*i <= n; i++) {
if(n % i == 0) return false;
}
return true;
}
vector<bool> state(1000001, true); // 기본적으로 true로 초기화해준다.
void sieve(int n) {
state[1] = false;
for(int i = 2; i*i <= n; i++) {
if(!state[i]) continue;
for(int j = i*i; j <= n; j += i)
state[j] = false;
}
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int m, n;
cin >> m >> n;
seive(n);
for(int i = m; i <= n; i++) {
if(state[i]) cout << i << '\n';
}
}
A, B에 대해 A를 B로 나눈 나머지를 r이라고 하면 GCD(A, B) = GCD(B, r)이다.int gcd(int a, int b) {
if(a == 0) return b;
return gcd(b%a, a);
}
int lcm(int a, int b) {
return a / gcd(a, b) * b; // int overflow를 방지
}
vector<int> solve;
int main(void) {
int N;
cin >> N;
for (int i = 2; i * i <= N; i++) {
while (N % i == 0) {
solve.push_back(i);
N /= i;
}
}
for (auto a : solve) {
cout << a << '\n';
}
if (N != 1) cout << N << '\n';
}
<cmath><cmath>의 floor() 함수는 내림 함수이고, ceil() 함수는 올림 함수이다.double a = 3.14159;
cout << floor((a * 1e2) + 0.5) / 1e2;pow(x, y); // x ^ y 값을 반환한다.
exp(x); // e ^ x 값을 반환한다.
sqrt(x); // x의 제곱근을 반환한다.
log(x); // 자연로그 값 ln(x)를 반환한다.
log10(x); // 밑이 10인 상용로그 값을 반환한다.