判断素数(质数)

Description

数学上把除了1和它本身,没有别的数能够整除它的自然数叫做素数(或质数)。现在由键盘输入一个自然数N(N<10¹²),编程判断n是否是素数。

Input

输入一个整数

Output

若是素数,输出“YES”否则输出“NO”。

Sample Input

2

Sample Output

YES

HINT

若一个正整数N为合数,则存在一个能整除N的数K,其中2<=K<=sqrt(N)

python解法

import math
# 从键盘输入一个自然数N
N = int(input("请输入一个自然数N (N < 10^12): ")) 

# 判断N是否是素数
is_prime = True  # 初始化一个变量,用于标记N是否是素数

# 如果N小于等于1,则它不是素数
if N <= 1:
    is_prime = False  # 将is_prime设置为False,表示N不是素数
else:
    # 否则,从2开始到N的平方根(向上取整)进行遍历
    for i in range(2, int(math.sqrt(N)) + 1):
        # 如果N可以被i整除(即余数为0),则N不是素数
        if N % i == 0:
            is_prime = False  # 将is_prime设置为False
            break  # 跳出循环

# 输出结果
if is_prime:
    print("YES")  # 如果is_prime为True,则输出N是素数
else:
    print("NO")  # 如果is_prime为False,则输出N不是素数

c++解法

#include<bits/stdc++.h>  // 包含大多数标准库头文件
using namespace std;     // 使用标准命名空间

int main() {
    int n;               // 定义一个整数变量n
    cin >> n;           // 从标准输入读取一个整数赋值给n

    if(n <= 1) {         // 如果n小于等于1
        return 0;       // 直接返回0,因为1和以下的数不是素数
    }

    // 使用for循环从2遍历到n的平方根(向上取整)
    for(int i = 2; i <= sqrt(n); i++) {
        if(n % i == 0) {  // 如果n可以被i整除(即余数为0)
            cout << "NO" << endl;  // 输出"NO"并换行,表示n不是素数
            return 0;       // 退出程序
        }
    }

    // 如果上面的循环结束后没有找到可以整除n的因子
    cout << "YES" << endl;  // 输出"YES"并换行,表示n是素数

    return 0;  // 程序正常结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END