问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python题:

发布网友 发布时间:2022-04-23 09:03

我来回答

3个回答

热心网友 时间:2022-04-18 07:19

1. 欧几里德算法
欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:
定理: *(a, b) = *(b, a mod b)
证明:
a可以表示成a = kb + r, 则r = a mod b
假设d是a, b的一个公约数, 则有 d|a, d|b, 而r = a - kb, 因此d|r。
因此,d是(b, a mod b)的公约数。
加上d是(b,a mod b)的公约数,则d|b, d|r, 但是a = kb + r,因此d也是(a, b)的公约数。
因此,(a, b) 和(a, a mod b)的公约数是一样的,其最大公约数也必然相等,得证。
欧几里德的Python语言描述为:

1
2
3
4
5
6
7
8
9
10

def *(a, b):
if a < b:
a, b = b, a

while b != 0:
temp = a % b
a = b
b = temp

return a

2. Stein算法
欧几里德算法是计算两个数最大公约数的传统算法,无论是理论,还是从效率上都是很好的。但是他有一个致命的缺陷,这个缺陷只有在很大的素数时才会显现出来。
考虑现在的硬件平台,一般整数最多也就是64位, 对于这样的整数,计算两个数值就的模很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。
Stein算法由J.Stein 1961年提出,这个方法也是计算两个数的最大公约数。和欧几里德算法不同的是,Stein算法只有整数的移位和加减法,这对于程序设计者是一个福音。
为了说明Stein算法的正确性,首先必须注意到以下结论:
*(a, a) = a, 也就是一个数和他自己的公约数是其自身。
*(ka, kb) = k * *(a, b),也就是最大公约数运算和倍乘运算可以交换,特殊的,当k=2时,说明两个偶数的最大公约数比如能被2整除。
Stein算法的python实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13

def *_Stein(a, b):
if a < b:
a, b = b, a
if (0 == b):
return a
if a % 2 == 0 and b % 2 == 0:
return 2 * *_Stein(a/2, b/2)
if a % 2 == 0:
return *_Stein(a / 2, b)
if b % 2 == 0:
return *_Stein(a, b / 2)

return *_Stein((a + b) / 2, (a - b) / 2)

3. 一般求解实现
核心代码很简单:

1
2
3

def *(a, b):
if b == 0:return a
return *(b, a % b)

附上一个用Python实现求最大公约数同时判断是否是素数的一般方法:
程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

#!/usr/bin/env python

def showMaxFactor(num):
count = num / 2
while count > 1:
if num % count == 0:
print 'largest factor of %d is %d' % (num, count)
break #break跳出时会跳出下面的else语句
count -= 1
else:
print num, "is prime"

for eachNum in range(10,21):
showMaxFactor(eachNum)

输出如下:

1
2
3
4
5
6
7
8
9
10
11

largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10

热心网友 时间:2022-04-18 08:37

付费内容限时免费查看回答稍等Copyright © 1999-2020, CSDN.NET, All Rights Reserved

 登录



DY_浅陌初心

关注

python算法题 原创

2018-06-23 10:44:47

 2点赞

DY_浅陌初心 

码龄4年

关注

1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?

for a in range( 1, 5):

for b in range( 1, 5):

for c in range( 1, 5):

for d in range( 1, 5):

if(a!=b and a!=c and a!=d and b!=c and b!=d and c!=d):

print(a,b,c,d)

运行结果

注意:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

2 题目:打印出国际象棋图

分析:行为0-7,列为0-7,当行列之和为奇数时为黑色

import sys

for i in range( 8):

for j in range( 8):

if (i + j) % 2 != 0:

print( chr( 219), end= '')

print( chr( 219), end= '')

else: print( ' ', end= '')

print( ' \n ', end= '')

3题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

判断是否为字母:str.isspace

判断是否为空格:str.isalpha

判断是否为数字:str.isdigit

判断是否为其他字符:前三种都不是就是其他字符

输入: str = input( 'please input a string:\n' )

space = 0

digit= 0

alpha= 0

other= 0

str = "12jdfj wjdf dfj wejwi jsdifj,,nfiraj "

提问错

回答。

热心网友 时间:2022-04-18 10:12

付费内容限时免费查看回答1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的四位数?都是多少?

for a in range( 1, 5):

for b in range( 1, 5):

for c in range( 1, 5):

for d in range( 1, 5):

if(a!=b and a!=c and a!=d and b!=c and b!=d and c!=d):

print(a,b,c,d)

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

(1)将A塔上编号1~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
自己改编了几首歌曲要怎样发表 如何申请歌的专利 全款落地40万左右,推荐两款车型,一是奥迪A6L,二是国产红旗HS7_百度... PS圆点如何画出来ps圆点如何画出来图片 广西千米以上高山排名 香港能不能用Q或微信 香港稳定虚拟主机 什么是偏导数为0的点? 想请问一下蹬完动感单车后如何放松肌肉? 动感单车骑完如何拉伸肌肉 清明节当天梦到已故多年的奶奶跟我一起逛街买拖把,结果没买到,是什么预兆吗? 去除鱼尾纹应该用什么化妆品?哪个品牌效果最好? 邮政etc怎么重新激活? 去除鱼尾纹哪效果好 梦见有个熟悉的人来我家,好像是想约我买拖拉机拖混泥土好吗?_百度知 ... 有什么比较好的python教程? 梦见男朋友给我家买拖把什么意思 鱼尾纹怎么去除? 做梦别人让我给他对象买拖鞋是怎么回事? python 自动登录CSDN的脚本怎么实现 python 自动登录CSDN的脚本怎么实现? 羽绒服用蓝月亮衣领净洗过后,有几处褪色的的痕迹,衣领净是不是不能洗羽绒服? 请教高人:python语言中用Tkinter怎样设置窗口背景为图片? win10下怎么读取iso文件 送父亲打火机刻什么字好 - 信息提示 小马win10永久激活工具 怎么解压 羽绒服洗涤有一些技巧,它可以水洗吗? 打火机刻字有内涵5个字 python有哪些应用 csdn 鱼尾纹除皱效果好吗?什么方法去鱼尾纹效果最好?拜托各位大神 亮面黑色羽绒服为什么水洗后会褪色,怎么办? etc设备升级怎么重新升级 梦到给爸爸和弟弟买了双父子拖鞋 有什么寓意吗? 换玻璃后etc重新激活流程是怎么样的? 去鱼尾纹用什么比较好? 羽绒服上有快皮会褪色,怎么洗好 ETC因背胶问题脱落(设备无蓝牙开关),如何重新激活? cad图怎么显示坐标点? 怎样重新激活掉下来的ETC? 梦到别人拖我鞋 贱是什么意思? 红色羽绒服要怎么洗啊!!!会 不会褪色的啊!! cad如何读取坐标教程 梦见别人拖些东西进我家门 我在网上建行买的ETC,掉了后怎么重新激活? 贱是什么意思 我昨晚做梦梦到有人有人使劲拖我下床,我使劲的犟,后来惊醒了 去鱼尾纹的最好方法 黑色羽绒服洗变色了