查看: 787|回复: 5

[Python] 更相减损术

[复制链接]

0

技术

7

魅力

1

原创

网站编辑

我最可铐

Rank: 8Rank: 8

积分
6867
人气
217
分享
594

最佳新人活跃会员

发表于 2022-6-30 17:17:26 | 显示全部楼层 |阅读模式
本帖最后由 explore 于 2022-6-30 17:18 编辑

期末考完了,来练个手(想想还是小升初入了个门,现在几乎全还给老师了)

更相减损术



百科里面有,然鹅是自己写的


没装IDE,跑不了,纯靠想象,大概率有syntax err/逻辑err  

@xiaomeng 你康康写得怎么样?自我感觉很烂


[Python] 纯文本查看 复制代码
m=x=-1
n=-2

bigger=eval(input('数a:'))
smaller=eval(input('数b:'))
if bigger>smaller:
    break
elif bigger=smaller:
    print('最大公约数是1')
    break


else:
    bigger,smaller=smaller,bigger



while bigger%2=0 and smaller%2=0:
    bigger=bigger/2
    smalller=smaller/2

m=bigger-smaller
n=abs(smaller-m)
x=abs(m-n)

while n!=x:
    n=abs(n-x)
    x=abs(n-x)

print('a、b的最大公约数是',n)



《不知所码》


0

技术

7

魅力

1

原创

网站编辑

我最可铐

Rank: 8Rank: 8

积分
6867
人气
217
分享
594

最佳新人活跃会员

 楼主| 发表于 2022-6-30 17:19:54 | 显示全部楼层
本帖最后由 explore 于 2022-6-30 17:24 编辑

@xiaomeng242 又@错了


我觉得应该实现不了效果……

半天跑不动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

技术

1

魅力

0

原创

略知一二

Rank: 3Rank: 3

积分
902
人气
25
分享
0
发表于 2022-7-1 11:58:15 | 显示全部楼层
本帖最后由 xiaomeng242 于 2022-7-1 14:15 编辑
explore 发表于 2022-6-30 17:19
@xiaomeng242 又@错了

楼主代码写的不错(毕竟想象出来的还是有很多bug的),不过恕我直言,你的码品很差
@ explore

0

技术

1

魅力

0

原创

略知一二

Rank: 3Rank: 3

积分
902
人气
25
分享
0
发表于 2022-7-1 11:58:54 | 显示全部楼层
explore 发表于 2022-6-30 17:19
@xiaomeng242 又@错了

你还是装解释器跑吧,不建议在线运行

0

技术

7

魅力

1

原创

网站编辑

我最可铐

Rank: 8Rank: 8

积分
6867
人气
217
分享
594

最佳新人活跃会员

 楼主| 发表于 2022-7-1 22:18:38 | 显示全部楼层
xiaomeng242 发表于 2022-7-1 11:58
楼主代码写的不错(毕竟想象出来的还是有很多bug的),不过恕我直言,你的码品很差{:5_ ...

码品?
[Python] 纯文本查看 复制代码
import this

这玩意?

很差是肯定的,快2年没码过了,而且还只入了个门

0

技术

1

魅力

0

原创

略知一二

Rank: 3Rank: 3

积分
902
人气
25
分享
0
发表于 2022-7-4 09:54:09 | 显示全部楼层
explore 发表于 2022-7-1 22:18
码品?
这玩意?



我帮你改了一下代码,见附件

上周五我i就改完了,不过忘了发


[Python] 纯文本查看 复制代码
# Author : explore & xiaomeng
# Time : 2022/7/1

m = x = -1
n = -2

bigger = eval(input('数a:'))
smaller = eval(input('数b:'))
while True:   # break只能用在for
    # 、while循环中,不可以直接使用
    if bigger > smaller:
        break
    elif bigger == smaller:
        print('最大公约数是1')

        break
    else:
        bigger, smaller = smaller, bigger

while bigger % 2 and smaller % 2 == 0:
    bigger = bigger / 2
    smalller = smaller / 2

m = bigger - smaller
n = abs(smaller - m)
x = abs(m - n)

while n != x:
    n = abs(n - x)
    x = abs(n - x)

print('a、b的最大公约数是', n)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 1人气 +3 收起 理由
explore + 3 感谢

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表