100到200的素数
题目 判断101-200之间有多少个素数,并输出所有素数
import math
# 遍历100到200之间的所有数字
for i in range(100,200):
flag=0
# 遍历2到i的平方根之间的所有数字
for j in range(2,round(math.sqrt(i))+1):
# 如果i能被j整除,则flag为1,跳出循环
if i%j==0:
flag=1
break
# 如果flag为1,则跳过本次循环
if flag:
continue
# 打印i
print(i)
print('\nSimplify the code with "else"\n')
# 遍历100到200之间的所有数字
for i in range(100,200):
# 遍历2到i的平方根之间的所有数字
for j in range(2,round(math.sqrt(i))+1):
# 如果i能被j整除,则跳出循环
if i%j==0:
break
# 如果循环正常结束,则打印i
else:
print(i)
这行代码是Python中一个for循环的一部分,用于遍历一个从2到round(math.sqrt(i))+1的整数序列。下面是对这行代码的详细解释:
for j in range(2, round(math.sqrt(i))+1)::
for j in range(start, stop): 是Python中创建一个循环的标准语法,其中j是循环变量,range(start, stop)生成一个从start到stop-1的整数序列。
start 是这个序列的起始值,这里是 2。 stop 是这个序列的终止值,这里是 round(math.sqrt(i))+1。 math.sqrt(i) 计算 i 的平方根。 round() 函数将计算结果四舍五入到最接近的整数。 +1 是为了确保循环包括 round(math.sqrt(i)) 这个值,因为 range 函数生成的序列不包括终止值。
用途:
这种循环通常用于检查一个数 i 是否是素数。在素数检测算法中,一个数 i 如果没有2到 sqrt(i) 之间的任何因子,则被认为是素数。 通过遍历从2到 sqrt(i) 的所有整数,并检查 i 是否能被这些数整除,可以确定 i 是否是素数。
注意事项:
math 模块需要在代码的开头导入,使用 import math。 如果 i 是一个很小的数,比如1或2,这个循环可能不会执行任何迭代,因为 range(2, x) 生成的序列需要 x 大于2。 这个循环的终止条件是 round(math.sqrt(i))+1,这意味着如果 i 是一个完全平方数,比如4、9、16等,round(math.sqrt(i)) 会等于 sqrt(i),但由于四舍五入,它可能会跳过一些重要的因子检查。因此,在某些情况下,可能需要更精确地处理平方根的计算。 总的来说,这行代码是用于遍历一个特定范围内的整数,通常用于数学计算,特别是素数检测。
水仙花数
题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
# 遍历100到999之间的所有数字
for i in range(100,1000):
# 将数字转换为字符串
s=str(i)
# 获取个位数
one=int(s[-1])
# 获取十位数
ten=int(s[-2])
hun=int(s[-3])
if i == one**3+ten**3+hun**3:
print(i)
判断水仙花数
判断一个数是否为水仙花数
def is_narcissistic_number(num):
# 将数字转换为字符串,方便逐位处理
num_str = str(num)
# 获取数字的位数
n = len(num_str)
# 计算每个位上的数字的 n 次幂之和
sum_of_powers = sum(int(digit) ** n for digit in num_str)
# 判断是否等于原数
return sum_of_powers == num
# 测试
number = 153
if is_narcissistic_number(number):
print(f"{number} 是水仙花数")
else:
print(f"{number} 不是水仙花数")
输入一个三位数,判断它是否为水仙花数
def is_narcissistic_number(num):
# 确保输入是一个三位数
if num < 100 or num > 999:
return False
# 分解数字为百位、十位和个位
hundreds = num // 100
tens = (num // 10) % 10
ones = num % 10
# 计算每个位上数字的三次幂之和
sum_of_cubes = hundreds ** 3 + tens ** 3 + ones ** 3
# 判断是否为水仙花数
return sum_of_cubes == num
# 测试代码
num = int(input("请输入一个三位数: "))
if is_narcissistic_number(num):
print(f"{num} 是水仙花数")
else:
print(f"{num} 不是水仙花数")