#include <iostream>
using namespace std;
int main(void){
long long n, m;
cin>>n>>m;
long long ans5 = 0;
long long ans2 = 0;
// 5의 개수
for(long long i = 5; i <= n; i *= 5) ans5 += n / i; // n!
for(long long i = 5; i <= n - m; i *= 5) ans5 -= (n - m) / i; // (n - m)!
for(long long i = 5; i <= m; i *= 5) ans5 -= m / i; // m!
// 2의 개수
for(long long i = 2; i <= n; i *= 2) ans2 += n / i; // n!
for(long long i = 2; i <= n - m; i *= 2) ans2 -= (n - m) / i; // (n - m)!
for(long long i = 2; i <= m; i *= 2) ans2 -= m / i; // m!
cout<<(ans5 > ans2 ? ans2 : ans5);
}
#include <iostream>
using namespace std;
int main(void){
int n;
cin>>n;
for(int i = 2; i * i <= n ; i++){
while(n % i == 0){
cout<<i<<'\n';
n /= i;
}
}
if(n>1) cout<<n<<'\n';
}
#include <iostream>
#include <math.h>
using namespace std;
const int MAX = 1000001;
int prime[MAX]; // 0: 소수,1: 소수x
// 에라토스테네스의 채
void eratostenes(void){
for(int i = 2; i * i < MAX; i++) {
if(!prime[i]) // i가 소수일 경우
for(int j = i * i; j < MAX; j += i) // i의 배수는 모두 소수가 아님
prime[j] = 1;
}
prime[1] = 1;
}
int main(void){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
eratostenes();
while(1){
cin>>n;
if(n == 0) break;
for(int i = 3; i <= n / 2; i++) {
if(prime[i] == 0 && prime[n - i] == 0){
cout<<n<<" = "<<i<<" + "<<n - i<<'\n';
break;
} else if(i == n / 2)
cout<<"Goldbach's conjecture is wrong.\n";
}
}
}
c++ cn
#include <iostream>
#include <math.h>
using namespace std;
bool cn(int n){
int m = sqrt(double(n));
if(n == 1) return false;
for(int i = 2; i <= m; i++) {
if(n % i == 0) return false;
}
return true;
}
int main(void){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
while(1){
cin>>n;
if(n == 0) break;
for(int i = 3; i <= n / 2; i++) {
if(cn(n - i) && cn(i)){
cout<<n<<" = "<<i<<" + "<<n - i<<'\n';
break;
}
else if(i == n / 2) cout<<"Goldbach's conjecture is wrong.\n";
}
}
}
python 에라토스테네스
def eratos(n):
p=2
while p*p<=n:
if prime[p]==True:
for j in range(p*p, n+1, p):
prime[j]=False
p=p+1
if __name__ == "__main__":
prime=[True for _ in range(1000001)]
eratos(1000000)
while True:
n=int(input())
if n==0:
break
else:
for i in range(2, n):
if prime[i]==True and prime[n-i]==True:
print("%d = %d + %d"%(n, i, n-i))
break
else:
print("Goldbach's conjecture is wrong.")
#include <iostream>
#include <math.h>
using namespace std;
bool cn(int n){
int m = sqrt(double(n));
if(n == 1) return false;
for(int i = 2; i <= m; i++) {
if(n % i == 0) return false;
}
return true;
}
int main(void){
int m, n; // m 이상, n 이하
cin>>m>>n;
for(int i = m; i <= n; i++)
if(cn(i)) cout<<i<<'\n';
}
#include <iostream>
#include <math.h>
using namespace std;
bool cn(int n){
int m = sqrt(double(n));
if(n == 1) return false;
for(int i = 2; i <= m; i++) {
if(n % i == 0) return false;
}
return true;
}
int main(void){
int count;
int n;
int ans = 0; // 소수의 개수 저장
cin>>count;
for(int i = 0; i < count; i++) {
cin>>n;
if(cn(n)) ans++;
}
cout<<ans;
}
타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 세계에서도 프로그래밍을 하고 싶었던 정이는 백준 사이트에 접속하여 문제를 풀기로 하였다. 그러나 미래세계는 A진법을 사용하고 있었고, B진법을 사용하던 정이는 문제를 풀 수가 없었다. 뛰어난 프로그래머였던 정이는 A진법으로 나타낸 숫자를 B진법으로 변환시켜주는 프로그램을 작성하기로 하였다.
N진법이란, 한 자리에서 숫자를 표현할 때 쓸 수 있는 숫자의 가짓수가 N이라는 뜻이다. 예를 들어 N은 17일 때 한 자릿수에서 사용할 수 있는 수는 0, 1, 2, ... , 16으로 총 17가지가 된다.
코드
#include <iostream>
#include <vector>
using namespace std;
int main(void){
int a, b; // a진수 -> b진수
int count; // a진수 수의 자리수의 개수
int num[25]; // 각 자리수의 숫자
cin>>a>>b;
cin>>count;
for(int i = 0; i < count; i++) cin>>num[i];
// a진수 -> 10진수
int dec = 0;
for(int i = 0; i < count; i++) dec = dec * a + num[i];
// 10진수 -> b진수
vector<int> vec;
while(dec != 0){
vec.push_back(dec % b);
dec = dec / b;
}
// 출력
for(int i = vec.size() - 1; i >= 0; i--){
cout<<vec[i];
if(i != 0) cout<<' ';
}
}