프로그래머 X는 코딩을 하다가 문득, 수학 시간에 배운 정수와 소수를 구별하는 방법을 떠올렸다. 정수와 소수의 차이는 분수로 표현이 되느냐, 되지 않느냐에 따라 차이가 나기도 하며, 또한 파이 등 특정한 값을 나타내는 것에 의하여 소수인지 정수인지 판별이 나게 된다.
프로그래머 X는 입력값을 숫자를 입력하거나 문자를 입력하려고 하는데,
lv.1 예상
77개의 풀이가 있습니다.
try:
N = float(input('숫자를 입력하세요 '))
print('소수입니다.' if N!=int(N) else '정수입니다.')
except ValueError:
print('math error')
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main() {
float num = 0;
if (scanf("%f", &num) == 0) printf("Math Error");
else {
if (num - (int)num == 0) printf("정수");
else printf("소수");
}
}
try:
num=eval(input('입력 : '))
if num==int(num):print('정수')
else :print('소수')
except:
print('math error')
try :
value = eval(input("숫자를 입력 하세요 : "))
if type(value) is float:
print("소수")
elif type(value) is int:
print("정수")
except:
print("숫자 아님")
class Check(){
fun check(n : String) : String{
try{
if(n.toFloat() % 1.toFloat() == 0.toFloat()){return "정수"}
else {return "소수"}
} catch(e : Exception){
return "math error"
}
}
}
fun main() {
val obj = Check()
println("INPUT : ")
val input = readLine()
println(obj.check(input.toString()))
}
코틀린입니다. 결과
INPUT :
w
math error
INPUT :
12.3
소수
INPUT :
5
정수
import java.util.Scanner;
public class testing {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String n;
char c;
n = scanner.nextLine();
for(int i=0;i<n.length();i++){
c = n.charAt(i);
if(!('0'<= c && c <= '9')){
System.out.println("false");
System.exit(-1);
}
}
boolean isPrime = false;
int m = Integer.parseInt(n);
for(int i=2;i<m;i++){
if(m % i == 0){
isPrime = true;
break;
}
}
if(isPrime) {
System.out.println(m + "은 소수가 아닙니다.");
}
else{
System.out.println(m + "은 소수입니다.");
}
}
}
import java.util.Scanner;
public class EssenceDecimal {
public static void main(String[] args) {
System.out.print("Input : ");
Scanner sc = new Scanner(System.in);
String programerSay = sc.nextLine();
Distinction dt = new Distinction();
dt.GetData(programerSay);
System.out.println(dt);
}
}
class Distinction{
private static String data;
private static String Outdata;
public void GetData(String programerSay) {
this.data = programerSay;
}
@Override
public String toString() {
ma();
return Outdata;
}
private int ToInt(String a) {
return Integer.parseInt(a);
}
private Boolean Prime(int p) {
Boolean isPrime = false;
for(int i=2;i<p;i++){
if(p % i == 0){
isPrime = true;
break;
}
}
return isPrime;
}
private void ma() {
try {
Boolean isPrime = Prime(ToInt(data));
int a = ToInt(data);
if(isPrime) {
this.Outdata = a+"은 소수가 아닙니다";
}else {
this.Outdata = a+"은 소수 입니다";
}
} catch (NumberFormatException e) {
this.Outdata = "math error";
}
}
}
#저렙 입문자 입니다.
#1 번 문제
def JungOrSo(a): #정수냐 소수냐
b = round(a) #입력 값으로 받은 a 의 소수를 올림
if a == b: #입력 값과 소수를 올림한 후의 입력값이 같다면 소수자리가 없는 것이니 정수
print('정수 입니다.')
else: #올림을 했을때 입력값과 값이 다르면 소수가 있었다는 것이니 소수
print('소수 입니다.')
JungOrSo(1)
JungOrSo(1.1)
#2 번 문제
def JungOrSo1(a): #정수냐 소수냐
if a != int or float: #입력 값이 정수나 소수가 아닐경우
print('math error')
else:
b = round(a) #입력 값으로 받은 a 의 소수를 올림
if a == b: #입력 값과 소수를 올림한 후의 입력값이 같다면 소수자리가 없는 것이니 정수
print('정수 입니다.')
else: #올림을 했을때 입력값과 값이 다르면 소수가 있었다는 것이니 소수
print('소수 입니다.')
JungOrSo1('gg')
try:
num = eval(input("입력하시오: "))
if num - int(num):
print("소수입니다.")
else:
print("정수입니다.")
except:
print('math error')
class check() {
fun check(n : string) : string{
try{
if(n.toFloat() % 1.toFloat() == 0.toFloat()){return "정수"}
else {return "소수"}
}catch(e : Exception){
return "math error"
}
}
}
fun main() {
val obj = check()
printIn("input : ")
val input = readLine()
printIn(obj.check(input.toString()))
}
파이썬의 try..except 예외처리 기능을 이용해서 작성했습니다.
try:
A=input('숫자를 입력하세요')
int(A)
except ValueError: #다른 타입을 정수 타입으로 지정했을 때 실행됨
try:
float(A)
except ValueError: #문자를 소수로 지정했을 때 실행됨
print('math error')
else:
print('소수입니다')
else:
print("정수입니다")
try:
N=input()
int(N)
except ValueError :
try:
float(N)
except: TypeError: print("Math Error")
else: print("소수")
else: print("정수")
#파이썬
#입력받은 값이 숫자이거나 .(소수점) 일 경우에만 변수 i를 1씩 증가시킴
#그외 문자가 입력되지 않았다면 i값과 입력받은 값의 수가 같음
#i값과 입력받은 값의 수가 같고 .이 1개 이하일 경우,
#정수와 소수를 판별함. 그외는 Math Error
#입력값(문자열)을 소수화 한 다음, 다시 정수화 한 값과 비교하여 같으면 그것은 정수
a,i=str(input('a=')),0
while (i<len(a)):
if (ord(a[i])>=48 and ord(a[i])<=57) or ord(a[i])==46:
i+=1
else:
break
if len(a)==i and a.count('.')<2:
if float(a)==int(float(a)):
print('정수')
else:
print('소수')
else:
print('Math Error')
import unittest
def isint(x):
'''
정수 >> 'INT'
소수 >> 'DECIMAL'
그외 >> 'MATH ERROR'
'''
try:
if x.startswith('0'):
raise Exception
x_float = float(x)
if x_float % 1 == 0.0:
return 'INT'
else:
return 'DECIMAL'
except:
return 'MATH ERROR'
class Test(unittest.TestCase):
def test_startswith_0(self):
x = '010'
rst = isint(x)
self.assertEqual(rst, 'MATH ERROR')
def test_startswith_00(self):
x = '0010'
rst = isint(x)
self.assertEqual(rst, 'MATH ERROR')
def test_10_0(self):
x = '10.0'
rst = isint(x)
self.assertEqual(rst, 'INT')
def test_10_01(self):
x = '10.01'
rst = isint(x)
self.assertEqual(rst, 'DECIMAL')
def test_str(self):
x = '21.o'
rst = isint(x)
self.assertEqual(rst, 'MATH ERROR')
def test_10_0_0(self):
x = '10.0.0'
rst = isint(x)
self.assertEqual(rst, 'MATH ERROR')
if __name__ == '__main__':
unittest.main()
def distinguish(x):
if x == str(x):
print('math error')
elif x % 1 == 0:
print('%s is integer.'%x)
elif x % 1 != 0:
print('%s is friction.'%x)
distinguish(x)
public class separateNum { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
Float num;
try {
num = Float.valueOf(input);
}catch (Exception e) {
System.out.println("math error\n정수로 변환할 수 없습니다.");
return;
}
trans(num);
}
static void trans(float a) {
int b = (int)a;
if(a - b == 0) {
System.out.printf("%d는 정수이다.", b);
}else {
System.out.printf("%.3f는 실수이다.", a);
}
}
}
try:
inp = float(input())
if inp-int(inp) == 0:
print('정수')
else:
print('소수')
except ValueError:
print('math error')
try:
inp = float(input())
if inp-int(inp) == 0:
print('정수')
else:
print('소수')
except ValueError:
print('math error')
import sys
num = input() count = 0
try: in_num = int(num) except ValueError: print('math error') sys.exit()
for i in range(1, in_num+1): a = in_num%i if a ==0: count += 1 if count > 2: print('이것은 정수입니다') else: print('이것은 소수입니다')
try: num=float(input('숫자를 입력하세요')) #수를 입력받고 실수로 전환
except:print('math error') #문자 입력시 오류메시지
else:
if num==int(num): print('정수입니다') #입력받은수가 정수일 시 출력
else: print('소수입니다') #정수가 아닐시 출력
Clojure 입니다.
(print (let [num (read)] (if-not (number? num) "Math Error" (if (= num (int num)) "정수입니다." "소수입니다."))))
x = input()
try:
a = float(x)
if int(a) != a:
print("소수")
else:
print("정수")
except ValueError:
print("math error")
def input_num():
while True:
try:
num = float(input("Enter your number: "))
break
except ValueError:
print("Please input NUMBERS ONLY / MATH Error")
return num
number = input_num()
if type(number) == type(1):
print(f'{int(number)} is an integer')
else:
if str(round(number,1))[-1] == "0":
print(f'{int(number)} is an integer')
else:
print(f'{number} is a float')
while True:
try:
nu = int(input("Input integer : "))
j = 0
for i in range(2, nu):
if nu % i == 0:
j += 1
break
break
except ValueError:
print("That was no valid number. Try again...")
if j == 0:
print("{} is a prime number.".format(nu))
else:
print("{} is not a prime number. It's divided by {}".format(nu,i))
C#
using System;
namespace CD246
{
class Program
{
static void Main()
{
string rst = CheckType(Console.ReadLine());
Console.WriteLine(rst);
}
static string CheckType(string input)
{
// 입력 문자열을 실수로 변환 가능한지 여부 판단
bool isNumeric = double.TryParse(input, out double parsedNumber);
if (!isNumeric)
{
return "math error";
}
// 실수 값이 정수 변환 값과 같은지 판단
return parsedNumber == (int)parsedNumber ? "정수" : "소수";
}
}
}
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
a = input()
if (is_number(a) == False) | (a[0] == '0') :
print('math error')
else :
if str(float(a)).split('.')[1] == '0' :
print('정수')
else :
print('소수')
try:
number =float(input("숫자를 입력하거나 문자를 입력하세요!"))
key = number-int(number)
if key == 0:
print("이 수는 정수입니다")
elif key <1:
print(" 이 수는 소수입니다")
except:
print("math error")
numbers = [1, 1.1, 3, '5', 'message']
for n in numbers:
if type(n) == int:
print('integer ', end='')
elif type(n) == float:
print('float ', end='')
else:
print('math-error ', end='')
출력: integer float integer math-error math-error
파이썬을 이용하여 작성하였습니다. try와 except 구문을 이용하였습니다. 입력받은 값을 int를 사용하여 정수인 경우와 아닌 경우로 먼저 구분하고, 그 후 except구문에서 float을 이용하여 소수인지 문자인지로 구분하는 방식입니다.
try:
num = input("숫자를 입력하시오:")
check_num = int(num)
print("정수입니다.")
except:
try:
check_num = float(num)
print("소수입니다.")
except:
print("math error")
import java.util.Scanner;
public class Test03 {
public static void main(String[] a) {
Scanner sc = new Scanner(System.in);
try {
double d = sc.nextDouble();
int di=(int)d;
if (d-di==0)
System.out.println("정수");
else
System.out.println("소수");}
catch(Exception e){
System.out.println("math error");
}
}
}
using System;
namespace _61일차_10월01일
{
class MainApp
{
static void Main(string[] args)
{
//정수 {-99... ~ 99...}
//소수 {-0.999 ~ 9999...0}
Console.Write("Input Number : "); //숫자 데이터 입력 받기
string Input_Data = Console.ReadLine(); //입력된 값 Input_Data에 저장
char[] Array_Char = Input_Data.ToCharArray(); //첫번째 입력값이 0인경우를 파악하기 위한 배열 생성(입력값 첫부분이 0일경우 숫자가 아님)
//소수점 개수를 파악하기 위한 로직 (소수점이 2개들어갈시 숫자가 아님)
string Word = "."; //소수점 개수 판별을 위해 "."이 담긴 변수 선언
string[] words = Input_Data.Split(new string[] {Word}, StringSplitOptions.None); // "."을 기준으로 문자를 나누기
int count = words.Length - 1; // "."의 개수를 count변수에 저장
try
{
if (Input_Data.Contains('.') && count == 1) //입력된 문자에 "."이 들어가고 개수가 1개일때 소수
{
Console.WriteLine("소수 입니다.");
}
else if (Array_Char[0] == '0') //첫번째 입력된 문자열이 0인경우 에러 발생
{
Console.WriteLine("Math Error");
}
else if (int.Parse(Input_Data) <= 0 || int.Parse(Input_Data) > 0) //정수 판별
{
Console.WriteLine("정수 입니다.");
}
}
catch (System.FormatException) //숫자 형식이 아닌 문자열이 입력된 경우 출력
{
Console.WriteLine("Math Error");
}
}
}
}
def isNumber():
x=input()
if x.isdigit():
x=int(x)
print('소수' if sum([1 for a in range(1,x+1) if x%a==0])==2 else '정수')
else:
print('math error')
isNumber()
def integer_criterion(x):
if type(x) != str:
remainder = x % 2
if remainder in [0, 1]:
print("An integer")
else:
print("Not an interger")
else:
print("math error")
import re p=re.compile('\D') n=input() if p.findall(n)!=["."] and p.findall(n)!=[]: print('math error') else : print('integer') if float(n)==round(float(n)) else print('not integer')
import re
class identifyNumber:
def __init__(self):
self.result = ""
def screenNumber(self,num):
p = re.compile(r"\d+")
m = p.match(str(num))
if not m:
print("Math ERROR")
else:
iprime = 1
for i in range(2,num):
if num%i==0:
iprime = 0
print (iprime)
a = identifyNumber()
a.screenNumber(9)
a.screenNumber(5)
a.screenNumber("aaa")
num_text = input()
try:
if type(eval(num_text)) == int:
print("{}는 정수입니다.".format(num_text))
elif type(eval(num_text)) == float:
print("{}는 소수입니다.".format(num_text))
except SyntaxError:
print("math error")
def dis(text):
text1 = float(text)
if text1 - int(text1) == 0:
print('integer')
if text1 - int(text1) != 0:
print('float')
try:
text = input('type : ')
dis(text)
except:
print('Math Error')
def dis(text):
text1 = float(text)
if text1 - int(text1) == 0:
print('integer')
if text1 - int(text1) != 0:
print('float')
try:
text = input('type : ')
dis(text)
except:
print('Math Error')
def check(n):
try:
n = int(n)
except:
return '숫자를 입력하세요'
for a in range(2,n-1):
if n%a == 0:
return '정수입니다.'
return '소수입니다.'
a1 = input('숫자 입력: ')
a2 = check(a1)
print(a2)
def sosu(a):
if a-int(a)==0:
print("jeong su")
else:
print("so su")
try:
a=float(input('write number'))
sosu(a)
except:
print ("math error")
def ispn(s):
for i in range(2,(int((s**(0.5))) + 1)):
if(s % i == 0): return 0
return 1
import re
try:
s = input()
float(s)
p = re.compile("[0]+[\d]+")
if(p.search(s)):
print("math error")
elif(bool(float(s) % int(float(s)))):
print("소수입니다..")
else:
s = int(float(s))
if(s == 1): print("소수입니다.")
elif(ispn(s)): print("소수입니다.")
else: print("정수입니다.")
except ValueError:
print("math error")
너무 어거지로 풀었네요ㅜㅠ
def math(a):
if int(a) == a:
print("정수")
if int(a) != a:
print("소수")
try:
s = float(input("숫자를 입력해주세요"))
math(s)
except:
print("math error")
n = input()
try:
n = float(n)
if n == int(n):
print("정수")
else:
print("소수")
except:
print("math error")
a = input()
try:
n = float(a)
if n == int(n):
print("정수입니다")
else:
print("소수입니다")
except:
print("Math Error")
try:
x=float(input('숫자 입력'))
if x - int(x) == 0:
print('정수')
if x - int(x) != 0:
print('소수')
except ValueError:
print('math error')
def check_decimal(num_text):
try:
num = float(num_text)
if num % 1 == 0:
print("정수입니다.")
else:
print("소수입니다.")
except:
print("math error")
try:
n = float(input())
except:
print('math error')
else:
if int(n) < n:
print('소수')
elif int(n) == n:
print('정수')
try:
num = eval(input('입력 : '))
if num == int(num):
print('정수')
else:
print('소수')
except:
print('math error')
try:
i = float(input("입력:"))
if i-int(i) == 0:
print('정수')
else:
print('소수')
except ValueError:
print('math error')
구문에 대한 정답은 알아서 해석하세요~
X = input()
import math
if X.isalpha() == False:
X = float(X)
if math.ceil(X) == X:
print("정수")
else: print("소수")
else: print("math error")
l = []
try : a = int(input('정수소수판별:'))
except : print('math error \n문자열입니다.')
else :
for i in range(1,a+1) :
if a % i == 0 :
l.append(i)
if len(l) < 3 : print('소수')
else : print('정수')
python 3.9.6입니다. GG님의 아이디어를 참고했습니다.
try:
int_or_float = bool(float(input('수를 입력하세요. ')) % 1)
if int_or_float:
print('소수입니다.')
else:
print('정수입니다.')
except ValueError:
print('math error')
실행 결과입니다.
수를 입력하세요. 34
정수입니다.
수를 입력하세요. 42.893
소수입니다.
#codingdojing_dintinguishNum
a = input("typing: ")
try:
N = float(a)
if N - int(N) == 0:
print('정수')
else:
print('소수')
except ValueError:
print("math error")
파이썬 3.8.10으로 작성되었습니다.
import re
f = re.compile('[0-9]+[.][0-9]+')
i = re.compile('[0-9]+')
data = input().strip()
if len(re.sub(f, '', data)) == 0:
print('소수입니다.')
elif len(re.sub(i, '', data)) == 0:
print('정수입니다.')
else:
print('math error')
def find_type(a):
try:
if a - int(a) == 0:
print('정수')
else:
print('소수')
except:
print('math error')
if __name__ == '__main__':
find_type('안녕')
def is_int(n):
if n-int(n)==0:
print('정수')
else:
print('소수')
try:
is_int(float(input()))
except ValueError:
print('math error')
static String primeNumber(int x) {
boolean isx = false;
for (int i = 2; i < x; i++) {
if (x % i == 0)
isx = true;
}
if (isx)
return "정수";
else
return "소수";
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean isNum = true;
String num = "";
while (isNum) {
System.out.println("숫자를 입력하세요.");
num = s.nextLine();
for (int i = 0; i < num.length(); i++) {
if (num.charAt(i) >= '0' && num.charAt(i) <= '9') {
isNum = false;
break;
} else
System.out.println("math error");
}
}
System.out.println(primeNumber(Integer.parseInt(num)));
}
a = input()
try:
b= float(a)
except ValueError:
print("math error")
else :
try:
c=int(a)
except ValueError:
print("소수입니다")
else :
print("정수입니다")
def tool(num):
if num - int(num) == 0:
print("정수")
else:
print("소수")
try:
num = input("Enter num: ")
num = float(num)
tool(num)
except ValueError:
print("math error")
a=input('숫자를 넣어 주세요.')
try:
b=float(a)
if b == round(b):
print('정수입니다.')
if b != round(b):
print('소수입니다.')
except:
print('math error')
public class test {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
try {
double input = sc.nextDouble();
if(input%1.0==0) {
System.out.println("정수");
}
else {
System.out.println("소수");
}}
catch (Exception e) {
System.out.println("math error");
}
}
}
def test(n):
if type(n) == float:
return 'float'
elif type(n) == int:
return 'int'
elif n.isalpha():
return 'math error'
print(test(0.5))
package com.algorithm.algorithmpractice.dojang;
public class PrimeNumber {
private static String getPrimeNumber(String expectedNumber){
final char start = '1';
final char end = '9';
String prime = "소수";
String notPrime = "소수가 아닌 수";
String input = expectedNumber;
for(int i = 0; i < expectedNumber.length(); i++){
if(input.charAt(i) < start || input.charAt(i) > end){
return "error";
}
}
int number = Integer.parseInt(input);
if(number == 1) return notPrime;
if(number == 2) return prime;
if(number == 3) return prime;
for(int i = 3; i < number; i += 2){
if(number % i == 0){
return notPrime;
}
}
return prime;
}
public static void main(String[] args) {
System.out.println("result: " + getPrimeNumber("13"));
System.out.println("expected: " + "소수");
}
}
num = input('정수와 소수를 구별해주는 프로그램 입니다. \n 값을 입력해주세요 : ')
print('match over' if ((num.replace('.','', 1).isdigit() == False) or (int(num[0]) == 0)) else ('정수입니다.' if float(num)%1 == 0 else '소수입니다.'))
python
num = input()
try:
if bool(int(num)) == True:
print("정수입니다.")
except:
try:
if bool(float(num)) == True:
print("소수입니다.")
except:
print("math error")
# ascii 로 입력 data를 바꿔서 판단하는 프로그램
_ascii_ = {48,49,50,51,52,53,54,55,56,57}
num = input("Enter Natural Num. or Finite Num.:")
asc_data = []
data_slice = list(map(str,str(num)))
for i in range(len(data_slice)):
asc_data.append(ord(data_slice[i]))
asc_data = [ j for j in asc_data if j not in _ascii_ ]
if len(asc_data) == 0:
print("Natural Number")
elif asc_data.count(46) == 1:
print("Finite Number")
else:
print("Math Error")
N = input('입력하세요.: ')
answer = '정수'
for n in N:
if n != '.' and ( n<'0' or n>'9'):
answer = "'math error'"
break
elif n == '.':
answer = '소수'
print('\t{0}입니다.'.format(answer))