1009 : 각 자리수의 역과 합(Number Reverse)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int original[] = new int [11];
int i, j;
int cnt = 0;
for (i = 0; ; i++) {
original[i] = Integer.parseInt(in.readLine());
if (original[i] == 0) break;
cnt++;
}
for (i = 0; i < cnt; i++) {
bw.write(String.format(" %d\n", f(original[i])));
}
bw.flush();
}
private static Object f(int num) throws IOException {
// TODO Auto-generated method stub
int sum = 0;
int flag=0;
while (num > 0) {
if(flag==1 || num%10!=0)
{
bw.write(String.format("%d", num % 10));
flag=1;
}
sum = sum + num % 10;
num = num / 10;
}
return sum;
}
}
숫자들을 입력받아 그 숫자를 역으로 출력하고 각 자리수의 합을 더하는 문제.
2811 : 소수와 합성수
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int number[] = new int [6];
int i, j;
for (i = 0; i < 5; i++) {
number[i] = Integer.parseInt(st.nextToken());
}
for (i = 0; i < 5; i++) {
if (number[i]==1){
bw.write("number one\n");
}
else if (isPrime(number[i])) {
bw.write("prime number\n");
}
else {
bw.write("composite number\n");
}
bw.flush();
}
}
public static boolean isPrime(int num) {
if(num<2) return false;
for(int i=2;i<=Math.sqrt(num);i++) {
if(num%i==0) return false;
}
return true;
}
}
숫자를 입력받아 그 숫자가 소수인지, 합성수인지 판단하는 문제.
1901 : 소수 구하기
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n;
int i, j;
n = Integer.parseInt(in.readLine());
int arr[] = new int [n];
int sosu[][] = new int [n][2];
int flag = 0;
for (i = 0; i < n; i++) {
arr[i] = Integer.parseInt(in.readLine());
}
for (i = 0; i < n; i++) {
flag =0;
for (j = 0; j <= 1000001; j++) {
if (isPrime(arr[i] - j) ) {
bw.write(String.format("%d ", arr[i] - j));
flag = 1;
}
if (j!=0 && isPrime(arr[i] + j) ) {
bw.write(String.format("%d ", arr[i] + j));
flag = 1;
}
if (flag == 1)
{
bw.write("\n");
break;
}
}
}
bw.flush();
}
public static boolean isPrime(int num) {
if(num<2) return false;
for(int i=2;i<=Math.sqrt(num);i++) {
if(num%i==0) return false;
}
return true;
}
}
숫자를 입력받아 그 숫자랑 가장 차이가 적은 소수를 구하는 문제.
1740 : 소수
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n, m;
int i, j;
n = Integer.parseInt(in.readLine());
m = Integer.parseInt(in.readLine());
int sum = 0;
int min = 0;
int flag = 0;
for (i = n; i <= m; i++) {
if (isPrime(i)) {
if (flag == 0) {
min = i;
flag = 1;
}
sum = sum + i;
}
}
if (flag == 0) {
bw.write("-1");
}
else {
bw.write(String.format("%d\n", sum));
bw.write(String.format("%d\n", min));
}
bw.flush();
}
public static boolean isPrime(int num) {
if(num<2) return false;
for(int i=2;i<=Math.sqrt(num);i++) {
if(num%i==0) return false;
}
return true;
}
}
두 숫자를 입력받아 그 숫자의 범위 안에있는 소수의 합과 최솟값을 출력하는 문제.
2813 : 소수의 개수
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static int arr[] = new int [2000001];
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n, m;
int i;
int cnt = 0;
m = Integer.parseInt(st.nextToken());
n = Integer.parseInt(st.nextToken());
eratos(n);
for (i = m; i <= n; i++) {
if (arr[i] == 0) {
cnt++;
}
}
bw.write(String.format("%d", cnt));
bw.flush();
}
private static void eratos(int num) {
int i, j;
arr[0] = 1;
arr[1] = 1;
for (i = 2; i * i <= num; i++) {
if (arr[i] == 0) {
for (j = i * i; j <= num; j += i) {
arr[j] = 1;
}
}
}
}
}
두 숫자를 입력받아 그 숫자의 범위 안에있는 소수의 개수를 출력하는 문제.
2814 : 이진수
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String st;
int i;
st = in.readLine();
bw.write(String.format("%d", change(st)));
bw.flush();
}
private static int change(String t) {
int i;
int len, ten = 0;
len = t.length();
for (i = 0; i < len; i++) {
ten = ten * 2 + (t.charAt(i) - '0');
}
return ten;
}
}
이진수를 입력받아 십진수로 변환하여 출력하는 문제.
1534 : 10진수를 2,8,16진수로
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
int jinsu;
int n;
n = Integer.parseInt(st.nextToken());
jinsu = Integer.parseInt(st.nextToken());
change(n,jinsu);
}
private static void change(int n, int jinsu) throws IOException {
// TODO Auto-generated method stub
if (n == 0) return;
change(n / jinsu, jinsu);
if (n % jinsu >= 10) {
bw.write(String.format("%c", (char)(n % jinsu - 10 + 'A')));
bw.flush();
}
else {
bw.write(String.format("%d", n % jinsu));
bw.flush();
}
}
}
십진수와 어떤진수로 변환할지를 입력받아 이, 팔, 십육진수로 변환하여 출력하는 문제.
3106 : 진법 변환
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int i;
int jinsu;
String n;
long jinsuConvert;
long returngap;
for (i = 0; ; i++) {
st = new StringTokenizer(in.readLine());
jinsu = Integer.parseInt(st.nextToken());
if (jinsu == 0) {
return;
}
n = st.nextToken();
jinsuConvert = Integer.parseInt(st.nextToken());
returngap = change(jinsu, n);
if(returngap==0)bw.write("0");
change_se(returngap, jinsuConvert);
bw.write("\n");
bw.flush();
}
}
private static long change(long jin, String t) {
int i;
int len;
long ten = 0;
len = t.length();
for (i = 0; i < len; i++) {
if (Character.isDigit(t.charAt(i))) {
ten = ten * jin + (t.charAt(i) - '0');
}
else {
ten = ten * jin + (t.charAt(i) - 'A' + 10);
}
}
return ten;
}
private static void change_se(long returngap, long jinsuConvert) throws IOException {
// TODO Auto-generated method stub
if (returngap == 0) return;
change_se(returngap / jinsuConvert, jinsuConvert);
if (returngap % jinsuConvert >= 10) {
bw.write(String.format("%c", (char)(returngap % jinsuConvert - 10 + 'A')));
bw.flush();
}
else {
bw.write(String.format("%d", returngap % jinsuConvert));
bw.flush();
}
}
}
a진법 수 s를 입력받아 b진법 수로 변환하여 출력하는 문제