一、实验目的:
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 itertoolss=list(itertools.combinations(range(10), 4))#print(s)for i in s:snum=''.join(list(map(lambda x:str(x),i)))count =0flag=Falsefor 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=Truebreakelse:snum=str(max-min)if(flag==False):breakif(flag):print('6147猜想正确')else:print('6147猜想错误')
- 结果图片