📌  相关文章
📜  国际空间研究组织 | ISRO CS 2013 |问题 28(1)

📅  最后修改于: 2023-12-03 15:07:33.951000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2013 | 问题 28

本题需要设计一个算法,确定一个给定的数是否为质数。

问题描述

判断一个给定的数 N 是否为质数。

输入

一个正整数 N(1<=N<=10^9)。

输出

如果 N 是质数,则输出“yes”,否则输出“no”。

解决方案

首先,质数是指除了 1 和它本身两个因数之外,没有其他的因数。因此,判断一个数是否为质数,只需要判断它是否有除了 1 和它本身以外的因数即可。

根据这个原理,我们可以迭代地从 2 开始除以递增的整数,直到整除为止。如果整除的结果不为 1 或本身,则说明存在其他的因数,即该数不是质数。

实现代码如下:

n = int(input())

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

if is_prime(n):
    print("yes")
else:
    print("no")
复杂度分析

对于一个给定的数 N,我们需要迭代地从 2 开始除以递增的整数。每次迭代的时间复杂度为 O(1),因此总的时间复杂度为 O(sqrt(N))。