You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写打印前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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:42:32