华为机试题:HJ6 质数因子(python)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
描述输入一个正整数按照从小到大的顺序输出它的所有质因子重复的也要列举如180的质因子为2 2 3 3 5
数据范围 1 ≤ n ≤ 2×109 +14
输入描述输入一个整数
输出描述按照从小到大的顺序输出它的所有质数的因子以空格隔开。
示例1
输入
180
输出2 2 3 3 5
举例说明
11没有质因子。
25只有1个质因子5本身。5是质数
36的质因子是2和3。(6 = 2×3)
42、4、8、16等只有1个质因子22是质数4 = 228 = 23如此类推
5100有2个质因子2和5。(100 = 22 × 52)
百度什么是质因子
Python3
def func(num):
"""函数定义"""
prime_num = 1
for i in range(2, int(num ** 0.5 + 2)):
if num % i == 0:
prime_num = 0
b = int(num / i)
print(str(i), end=' ')
func(b)
break
if prime_num == 1:
print(str(num), end=' ')
num = int(input())
func(num)
- input()用于获取控制台的输入。
- int() 强制转换为整型强转。
- math.sqrt()开根号运算四种方法。
- range() 输出指定范围内的所有值前闭后开。
- str() 将参数转换成字符串类型强转。
- print() 用于打印输出。
知识点详解
1、int() 将一个字符串或数字转换为整型强转。
函数说明
int(x, base=10)
输入参数
x
字符串或数字。base
参数x为二进制、八进制、十进制、十六进制数默认十进制数
。
备注若带参数base则输入必须是整数且整数必须以字符串的形式进行输入。如整数12转化为16进制int('12', base=16)
输入 | 返回值 |
---|---|
int() | 整数 0 |
int整数) | 整数 |
int(浮点数) | 浮点数的整数 |
int(字符串(整数)) | 将字符串类型转换为int类型转换 |
int(字符串(浮点数)) | 需先转换为float类型再进行int转换否则报错。 |
– | – |
int('整数', base=16) | 将输入的16进制整数转换为10进制整数同理其余进制 |
print(int()) # 【输出结果】0
print(int(2)) # 【输出结果】2
print(int(-2.9)) # 【输出结果】-2
print(int('-2')) # 【输出结果】-2
print(int(float('-2.9'))) # 【输出结果】-2
print(int('20', 16)) # 【输出结果】32
print(int('0XAA', 16)) # 【输出结果】170
2、range() 输出指定范围内的所有值前闭后开。
函数说明
range(start=0stopstep=1)
输入参数
- 1start序列的起始点默认值0。
- 2stop序列的终止点。
- 3step滑动步长默认为1。正数表示迭代上升负数表示迭代下降。
备注前闭后开[AB)即可以取到A值但取不到B值。
# 1指定stop=9, start默认为0step默认为1
for i in range(9):
print('A =', i)
'''
A = 0
A = 1
A = 2
A = 3
A = 4
A = 5
A = 6
A = 7
A = 8
'''
# 2指定start=2, stop=9, step默认为1
for i in range(2, 9):
print('B =', i)
'''
B = 2
B = 3
B = 4
B = 5
B = 6
B = 7
B = 8
'''
# 3指定start=2, stop=9, step=-2
for i in range(9, 2, -2):
print('C =', i)
'''
C = 9
C = 7
C = 5
C = 3
'''
3、math.sqrt()开根号运算四种方法。
方法一
math.sqrt(数字)
import math
x = math.sqrt(int(input('数字:'))) # 数字:50
print(x) # 7.0710678118654755
print(type(x)) # <class 'float'>
方法二
cmath.sqrt(数字)
import cmath
x = cmath.sqrt(int(input('数字:'))) # 数字:50
print(x) # (7.0710678118654755+0j)
print(type(x)) # <class 'complex'>
方法三
pow(数字次方)
x = pow(int(input('数字:')), 0.5) # 数字:50
print(x) # 7.0710678118654755
print(type(x)) # <class 'float'>
方法四
数字**0.5
x = int(input('数字:'))**0.5 # 数字:50
print(x) # 7.0710678118654755
print(type(x)) # <class 'float'>
4、str() 将参数转换成字符串类型强转。
函数说明
int(x, base=10)
print('返回空字符串:', str())
print('整数转换为字符串:', str(-23))
print('浮点数转换为字符串:', str(1.3e2))
print('列表转换为字符串:', str([12, '-23.1', 'Python']))
print('元组转换为字符串:', str((23, '9we', -8.5)))
print('字典转换为字符串:', str({'Huawei': 'China', 'Apple': 'USA'}))
print('集合转换为字符串:', str({'China', 'Japan', 'UK'}))
'''
返回空字符串:
整数转换为字符串: -23
浮点数转换为字符串: 130.0
列表转换为字符串: [12, '-23.1', 'Python']
元组转换为字符串: (23, '9we', -8.5)
字典转换为字符串: {'Huawei': 'China', 'Apple': 'USA'}
集合转换为字符串: {'China', 'UK', 'Japan'}
'''