python-求一个整数的质因数/字符串的镜像/加数

一:求一个整数的质因数
题目描述

编写一个程序,返回给定整数的质因数。
定义函数get_prime_factors(),该函数接受一个参数num(正整数)。
该函数应返回传入参数的质因数列表,且从小到大排序。
比如150的质因数分解如下:
150 = 2*3*5*5
因此,150的质因数是[2, 3, 5]。
示例输入
150
示例输出
[2, 3, 5]
解释: 150的质因数是[2, 3, 5]。
在返回的列表中某个质因数只出现一次。
判断num是为质数,可直接使用函数is_prime()。
来源/分类(难度系数:一星)
数组 循环结构


完整代码展示:
a=int(input())
b=[]
for i in range(2,a):
      j=2
      k=int(pow(i,0.5))
      while j<=k:
             if i%j==0:
                 break
             j+=1
      if j>k and a%i==0:
          b.append(i)
b.sort()
print(b)

a=int(input())
b=[]
for i in range(2,a):
    j=2
    k=int(pow(i,0.5))
    while j<=k:
        if i%j==0:
            break
        j+=1
    if j>k and a%i==0:
        b.append(i)
b.sort()
print(b)


代码解释:
“a=int(input()) ”,导入用户输入的需要分解质因数的整数a。
“b=[]
 for i in range(2,a):
       j=2
       k=int(pow(i,0.5))
       while j<=k:
              if i%j==0:
                  break
              j+=1
       if j>k and a%i==0:
           b.append(i)     ”,建立一个空列表b,接着依次遍历2~a-1的数字i,根据质数的定义判断i是否为质数:如果i是质数且i能将a整除,则将i添加进b中。
“b.sort()
 print(b) ”,对b中元素进行升序排序,最后打印b。


运行效果展示:

9e1a937bd0c34e63a367e244b9dc9e62.jpg

5796666455454c03ae2377b6cb7e3308.jpg 

 

 

 

 

二:字符串的镜像
题目描述

一个单词的镜像图像是如果将单词放在镜子前看到的内容。 由于镜子会横向反转图像,所以只有以下字符对才可能形成镜像图像:b 和 d,p 和 q,i 和 i,o 和 o,x 和 x,v 和 v,w 和 w,u 和 u,m 和 m。
编写一个程序来创建一个字符串的镜像图像。
定义函数mirror_image(),它有一个参数str(字符串)。
在函数内部,如果字符串str无法形成镜像图像,返回Not Possible。
否则,返回镜像字符串。
比如void的镜像图像是biov,类似如下:
void | biov
示例输入
void
示例输出
biov
你可以使用[::-1]来反转字符串。
非镜像字符串一定包含不可形成镜像的字符。
来源/分类(难度系数:二星)
字符串 列表


完整代码展示:
a=list(input())
b=['b','d','i','m','o','p','q','u','v','w','x']
sum=0
for i in range(0,len(a)):
      if a[i] in b:
           sum+=1
if sum!=len(a):
     print("Not Possible")
else:
       a.reverse()
       sum=""
       for i in range(0,len(a)):
             if a[i]=="b":
                  sum+="d"
             elif a[i]=="d":
                  sum+="b"
             elif a[i]=="p":
                  sum+="q"
             elif a[i]=="q":
                  sum+="p"
             else:
                    sum+=a[i]
       print(sum)

a=list(input())
b=['b','d','i','m','o','p','q','u','v','w','x']
sum=0
for i in range(0,len(a)):
    if a[i] in b:
        sum+=1
if sum!=len(a):
    print("Not Possible")
else:
    a.reverse()
    sum=""
    for i in range(0,len(a)):
        if a[i]=="b":
            sum+="d"
        elif a[i]=="d":
            sum+="b"
        elif a[i]=="p":
            sum+="q"
        elif a[i]=="q":
            sum+="p"
        else:
            sum+=a[i]
    print(sum)


代码解释:
“a=list(input()) ”,导入用户输入的需要判断是否存在镜像的字符串,并将其储存在列表a中。
“b=['b','d','i','m','o','p','q','u','v','w','x'] ”,建立一个列表b,用于储存b与d等镜像字符。
“sum=0
 for i in range(0,len(a)):
       if a[i] in b:
            sum+=1            ”,令sum=0,遍历a中元素,并判断该元素是否在列表b中:如果在,则sum+1。
“if sum!=len(a):
      print("Not Possible")
 else:
        a.reverse()
        sum=""
        for i in range(0,len(a)):
              if a[i]=="b":
                   sum+="d"
              elif a[i]=="d":
                   sum+="b"
              elif a[i]=="p":
                   sum+="q"
              elif a[i]=="q":
                   sum+="p"
              else:
                     sum+=a[i]
        print(sum)                 ”,判断sum是否等于列表a的长度:如果不是,则打印”Not Possible”;否则将a反转,建立一个空字符串sum,接着遍历a中元素,令sum连接该元素的镜像字符。最后打印sum的最终结果。


运行效果展示:

84f61cb109a24c5c96b2d923542df54d.jpg

8a324c54df7147d8ada0361483f36d8b.jpg 

 

 

 

 

三:加数
题目描述

给出一个正整数 n,在 n 的右边加入 ⌊n/2​⌋,然后在新数的右边再加入 ⌊⌊n/2​⌋/2​⌋​ 一直这样进行下去,直到加入的数为 0 为止(注意,0 不应当被加入)。
求加数结束后新数的长度。
输入
一行一个整数 n。
输出
一行一个整数,为加数结束后新数的长度。
样例输入1
37

样例输出1
8

提示
数据范围:1≤n≤105。
样例解释
⌊37/2​⌋=18,加到 n 的右边成为 3718;
⌊18/2⌋=9,加到新数的右边成为 37189;
⌊ 9/2⌋​=4到新数的右边成为 371894;                  ⌊4/2 ⌋​=2到新数的右边成为 3718942;
⌊2/2 ⌋​ =1到新数的右边成为 37189421;            ⌊1/2 ⌋​ =0数结束,最后得到的数是一个 8 位数。
来源/分类(难度系数:一星)
每日一题 模拟
完整代码展示:

a=int(input())
sum="{}".format(a)
while a>1:
       a=a//2
       sum+=str(a)
print(len(sum))

a=int(input())
sum="{}".format(a)
while a>1:
    a=a//2
    sum+=str(a)
print(len(sum))


代码解释:
“a=int(input()) ”,导入用户需要进行加数处理的数字a。
“sum="{}".format(a) ”,将a转换为字符串并赋值给b。
“while a>1:
        a=a//2
        sum+=str(a) ”,当a>1时:将a替换为a除以2所的数的整数部分。接着令sum连接新数a转换得到的字符串。直至a==1,跳出整个while循环。
“print(len(sum)) ”,打印字符串sum的最终长度。


运行效果展示:

eba4eeabffb94ce09021ab829d592df8.jpg

ce6e281ab5f64b12b886fe019394ffe2.jpg 

               (声明:以上内容均为原创)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值