判断素数(质数)
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; // 程序正常结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=153
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=153
文章版权归作者所有,未经允许请勿转载。
THE END