自动更新的网站建设,百度网站下拉排名,企业网站源码 企业网站管理系统,微讯信息群号1000000题目
本题的目标很简单#xff0c;就是判断一个给定的正整数是否素数。
输入格式 输入在第一行给出一个正整数N #xff08; ≤ 10 #xff09; #xff08;≤ 10#xff09; #xff08;≤10#xff09;#xff0c;随后N行#xff0c;每行给出一个小于 2 3 1 2^ 31…题目
本题的目标很简单就是判断一个给定的正整数是否素数。
输入格式 输入在第一行给出一个正整数N ≤ 10 ≤ 10 ≤10随后N行每行给出一个小于 2 3 1 2^ 31 231的需要判断的正整数。
输出格式 对每个需要判断的正整数如果它是素数则在一行中输出Yes否则输出No。
输入样例
2
11
111输出样例
Yes
No输入样例2
22. 18题解
def is_prime(n):if n 1:return Falseif n 3:return Trueif n % 2 0 or n % 3 0:return Falsei 5while i * i n:if n % i 0 or n % (i 2) 0:return Falsei 6return True1. n 小于等于 1 时直接返回 False因为素数定义为大于 1 的正整数。
2. n 等于 2 或 3 时直接返回 True因为它们都是素数。
3. n 能被 2 或 3 整除时返回 False因为它们不是素数。
4. i 从 5 开始每次循环检查 i 和 i 2 是否能整除 n如果可以返回 False。
这是因为除了 2 和 3所有素数都可以表示为 6k ± 1 的形式。
(
为什么是 6k ± 1 呢这可以从素数的奇偶性以及与 2 和 3 的关系来解释2 和 3 是最小的两个素数它们分别是 6k 和 6k 3其中 k 0。
所有大于 3 的偶数都不可能是素数因为它们可以被 2 整除。因此除了 2其它的偶数都不需要考虑。对于奇数来说除了 3其它的奇数要么与 6k 1要么与 6k 5 的形式相符。
如果一个奇数可以写成 6k 2 的形式那么它能被 2 整除不是素数。
如果一个奇数可以写成 6k 3 的形式那么它能被 3 整除不是素数。
如果一个奇数可以写成 6k 4 的形式那么它能被 2 整除不是素数。
剩下的奇数只能是 6k 1 或 6k 5 的形式。因此素数的分布规律在一定程度上可以归结为这个性质。这个性质在一些数学证明和算法设计中有应用但并不是用来判定素数的最优方法。实际上判定素数的最优方法仍然是一个有趣而复杂的问题涉及到数论和计算复杂性理论。
)
5.循环中的条件 i * i n 是因为如果 n 有大于 i 的因子那么这个因子必然有一个小于等于 sqrt(n) 的对应因子。因此只需要检查到 sqrt(n) 为止。
6.这个函数接受一个正整数 n 作为输入如果它是素数返回 True否则返回 False。
def main():N int(input())for _ in range(N):num int(input())if is_prime(num):print(Yes)else:print(No)if __name__ __main__:main()if __name__ __main__: 这一段代码在Python中
用于判断一个脚本是作为主程序运行还是作为模块被导入到其他脚本中。它的含义如下1.__name__ 是Python中的一个特殊内置变量用于表示当前模块或脚本的名称。
2.当一个Python脚本直接运行时__name__ 的值被设置为 __main__。
3.当一个Python脚本作为模块被导入到其他脚本中时__name__ 的值被设置为模块的名称即文件名去掉 .py 后缀。if __name__ __main__: 这一段代码允许你编写只有在脚本作为
主程序运行时才会执行的代码而不会在脚本作为模块被导入时执行。
这有助于将设置执行环境的代码与提供可重用函数或类的代码分开。