一、实验目的:
1、了解6174猜想的内容。
2、熟练使用选择结构和循环结构。
3、了解标准库itertools中combinations()函数的用法。
4、熟练使用字符串的join(方法。
5、熟练使用内置函数int()、str()、 sorted()。
二、实验内容:
1955年,卡普耶卡对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。
编写程序,使用枚举法对这个猜想进行验证。
举例:
若生成了4个数字:0,1,2,3:
3210-0123=3087 (python中:int('0123')=123)
8730-0378=8352
8532-2358=6174
上述计算仅3次,未超过7次,6174猜想针对0,1,2,3检验通过。
- 实验步骤:
- 程序代码
import itertools
s=list(itertools.combinations(range(10), 4))
#print(s)
for i in s:
snum=''.join(list(map(lambda x:str(x),i)))
count =0
flag=False
for j in range(8):
l=sorted(snum)
min=int(''.join(l))
print('min',min)
max=int(''.join(reversed(l)))
print('max:',max)
if(max-min==6174):
flag=True
break
else:
snum=str(max-min)
if(flag==False):
break
if(flag):
print('6147猜想正确')
else:
print('6147猜想错误')
- 结果图片