如何编写打印前10个完全平方数的程序?现有代码问题咨询
优化你的完全平方数遍历代码
嘿,我来帮你捋捋这段找前10个完全平方数的代码~ 先把你的代码贴出来:
i =2 n=1 #used for counting while 10>=n: for j in range(1,i): x =1 while x*x<=j: if x*x==j: print(j) n+=1 x+=1 i+=1 j+=1
原代码的问题点
- 嵌套了三层循环(
while+for+while),逻辑太绕,而且重复计算很多——比如每个数j都要从x=1开始逐个算平方对比,效率很低 - 最后一行的
j+=1完全多余,j是for循环的变量,每次循环都会重新赋值,这行代码只会搞乱变量状态 - 循环会重复检查已经处理过的数(比如
i=3时j又会遍历1、2,而j=1已经被检查过了),做了很多无用功
两种更简洁高效的写法
写法一:直接利用数学规律(最推荐)
前10个完全平方数其实就是1²到10²,直接生成就行,完全不需要判断:
for k in range(1, 11): print(k * k)
写法二:遍历自然数+高效判断
如果一定要通过遍历自然数并判断的方式实现,可以简化成一层循环,用平方根取整后验证的方法:
count = 0 num = 1 while count < 10: # 计算平方根并取整,再平方验证是否等于原数 sqrt_num = int(num ** 0.5) if sqrt_num * sqrt_num == num: print(num) count += 1 num += 1
这两种写法逻辑清晰、效率高,运行结果都是正确输出前10个完全平方数:1,4,9,16,25,36,49,64,81,100
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

