【每周一坑】信息加密 +【解答】正整数分解质因数
大家好,欢迎来到 Crossin的编程教室 !
今天给大家来一个我比较喜欢的话题之一:信息加密
当然,这道题算是信息加密的皮毛的皮毛了。
请听题:
阿圆和奇奇在上课的时候传递小抄,但又不想小抄的内容被其他人发现。于是他俩就约定了一种加密方式:
只对信息内容中的英语或者拼音(也就是字母)进行加密,其他符号保留原样
每个字母向后移动5位,成为密文,比如 a->f,k->p
如果向后5位超过了z,就折回字母开头,比如 x->c
请用一段代码完成此规则的加密和解密。
参考示例:
【加密】
输入:there is a vegetable in your teeth
输出:ymjwj nx f ajljyfgqj ns dtzw yjjym
【解密】
输入:onz sn mzf izt
输出:jiu ni hua duo
附加题
你能否解密出这段文字:
ild gdpsh sxktgvts xc p ldds, pcs x--
x iddz iwt dct athh igpktats qn,
pcs iwpi wph bpst paa iwt sxuutgtcrt.
详细解答和参考代码将在下期栏目中给出,也可以参考其他同学在留言中的代码。
期待各位同学提交解答,更期待你能完成整个系列。
简单代码可直接在留言中提交,较长代码推荐使用 paste.ubuntu.com 或
codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。
往期问题可点击文章开头的合集“每周一坑”进入查看。
从2开始尝试去整除原数N
如果可以整除,原数更新为 N//i,并输出 i;不能整除就继续试,直到N被自身整除
如果之前已经有质因数,最后剩下的 i 就是最后一个质因数;如果没有,说明原数就是质数
n = input('输入待分解的正整数:')
start = 2
is_prime = True
while n > 1: # 不断分解n,直到分解为1
for index in range(start, n + 1) :
if n % index == 0: # n能被index整除
n //= index # n=n//index
if n == 1:
if is_prime:
print(f'{index}是质数')
else:
print(index)
else: # index 一定是素数
print(f'{index} * ', end='')
is_prime = False
break
start = index
_往期文章推荐_
评论