{ }codelper
함수 만들기값 돌려주기while 반복나머지P0008

소수 판별

자연수 n이 주어진다.
n이 소수이면 "소수", 아니면 "소수 아님"을 출력하라.
소수는 1과 자기 자신으로만 나누어떨어지는 1보다 큰 수다.

입력
1 ≤ n ≤ 1,000,000,000
출력
"소수" 또는 "소수 아님"
예시 1 · stdin
97
stdout
소수
예시 2 · stdin
1
stdout
소수 아님
main.py
입력(stdin)

실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).

$ 준비됐어요

코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.

다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이

1은 소수가 아니에요 — 이걸 빠뜨리는 실수가 가장 흔해요.
나누어 볼 수는 i * i <= n까지만(제곱근까지)이면 충분해서 10억도 3만 번 정도면 끝나요.
판별은 함수로 따로 빼면 읽기 좋아요: Python def, C int is_prime(...), Java·C# static boolean/static bool.

Pythonmain.py · 13 줄
def is_prime(n):    if n < 2:        return False    i = 2    while i * i <= n:        if n % i == 0:            return False        i += 1    return True  n = int(input())print("소수" if is_prime(n) else "소수 아님")
JavaScriptmain.js · 8 줄
function isPrime(n) {  if (n < 2) return false;  for (let i = 2; i * i <= n; i++) if (n % i === 0) return false;  return true;} const n = Number(require("fs").readFileSync(0, "utf8"));console.log(isPrime(n) ? "소수" : "소수 아님");
TypeScriptmain.ts · 10 줄
import { readFileSync } from "node:fs"; function isPrime(n: number): boolean {  if (n < 2) return false;  for (let i = 2; i * i <= n; i++) if (n % i === 0) return false;  return true;} const n: number = Number(readFileSync(0, "utf8"));console.log(isPrime(n) ? "소수" : "소수 아님");
JavaMain.java · 14 줄
import java.util.Scanner; public class Main {    static boolean isPrime(long n) {        if (n < 2) return false;        for (long i = 2; i * i <= n; i++) if (n % i == 0) return false;        return true;    }     public static void main(String[] args) {        long n = new Scanner(System.in).nextLong();        System.out.println(isPrime(n) ? "소수" : "소수 아님");    }}
C#Main.cs · 17 줄
using System; class Program{    static bool IsPrime(long n)    {        if (n < 2) return false;        for (long i = 2; i * i <= n; i++) if (n % i == 0) return false;        return true;    }     static void Main()    {        long n = long.Parse(Console.ReadLine());        Console.WriteLine(IsPrime(n) ? "소수" : "소수 아님");    }}
C++main.cpp · 14 줄
#include <iostream> bool isPrime(long long n) {    if (n < 2) return false;    for (long long i = 2; i * i <= n; i++)        if (n % i == 0) return false;    return true;} int main() {    long long n;    std::cin >> n;    std::cout << (isPrime(n) ? "소수" : "소수 아님") << '\n';}
Cmain.c · 15 줄
#include <stdio.h> int is_prime(long long n) {    if (n < 2) return 0;    for (long long i = 2; i * i <= n; i++)        if (n % i == 0) return 0;    return 1;} int main(void) {    long long n;    scanf("%lld", &n);    puts(is_prime(n) ? "소수" : "소수 아님");    return 0;}
Craykonmain.cray · 18 줄
isPrime(n){    만약 (n < 2)    {        돌려주기 거짓;    }    반복 (i = 2; i * i <= n; i++)    {        만약 (n % i == 0)        {            돌려주기 거짓;        }    }    돌려주기 참;} n = 콘솔.줄읽기().수로변환();콘솔.쓰기(isPrime(n) ? "소수" : "소수 아님");