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=2k=int(pow(i,0.5))while j<=k:if i%j==0:breakj+=1if 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。
运行效果展示:

 
 
二:字符串的镜像
 题目描述
 一个单词的镜像图像是如果将单词放在镜子前看到的内容。 由于镜子会横向反转图像,所以只有以下字符对才可能形成镜像图像: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的最终结果。
运行效果展示:

 
 
三:加数
 题目描述
 给出一个正整数 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//2sum+=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的最终长度。
运行效果展示:

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