当前位置:网站首页>【每周一坑】信息加密​ +【解答】正整数分解质因数

【每周一坑】信息加密​ +【解答】正整数分解质因数

2022-07-06 12:23:00 Crossin的编程教室

零基础python入门教程:python666.cn

大家好,欢迎来到 Crossin的编程教室 !

今天给大家来一个我比较喜欢的话题之一:信息加密

当然,这道题算是信息加密的皮毛的皮毛了。

请听题:

阿圆和奇奇在上课的时候传递小抄,但又不想小抄的内容被其他人发现。于是他俩就约定了一种加密方式:

  1. 只对信息内容中的英语或者拼音(也就是字母)进行加密,其他符号保留原样

  2. 每个字母向后移动5位,成为密文,比如 a->f,k->p

  3. 如果向后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 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可点击文章开头的合集“每周一坑”进入查看。


【解答】正整数分解质因数

原题:【每周一坑】正整数分解质因数

本题的一种思路是:

  1. 从2开始尝试去整除原数N

  2. 如果可以整除,原数更新为 N//i,并输出 i;不能整除就继续试,直到N被自身整除

  3. 如果之前已经有质因数,最后剩下的 i 就是最后一个质因数;如果没有,说明原数就是质数

这里之所以不用判断除数 i 是不是质数,是因为 i 是从 2 开始逐个试过来的,如果它可以被更小的数整除,那么之前就已经被处理过了。因此能够被计算到的 i 一定就是质因数。

另外这里有个可以小小优化的点:每次尝试不一定要从2开始,而可以从上一个质因数开始。

参考代码:

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

_往期文章推荐_

【每周一坑】存档


如需了解付费精品课程教学答疑服务

请在Crossin的编程教室内回复: 666

80f73da5b95e2ec34be7e9961d46eac7.jpeg

原网站

版权声明
本文为[Crossin的编程教室]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_40523737/article/details/125611587