质数(素数)、分解质因数

很多逻辑思维的题不会,一方面是逻辑思维确实需要锻炼,另一方面是这方面可能涉及到的数学知识早就忘完了。

质数,素数,一个东西,除了1和它自身外,不能被其他自然数整除的数叫做质数(素数)。1不是质数。2是最小的质数(既是质数又是偶数),除了2之外,质数都是奇数

合数:指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。4是最小的合数。

因数:约数,整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数。

分解质因数:合数都可以写成几个质数相乘的形式,分解质因数只针对合数。

判断质数方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

为什么除到sqrt(这个数)就可以了呢?因为如果能被整除的,肯定一个小于sqrt(这个数),另外一个大于,所以只检查一半就可以了。

题目:判断101-200之间有多少个素数,并输出所有素数。

import math
leap = 1
count = 0
for i in range(101,201):
    for j in range(2, int(math.sqrt(i))+1):#这里加1是因为:比如9的话,sqrt(9)=3,必须加1才能把3算进去,否则9就判断错了
        if i%j == 0:
            leap = 0#可以整除的话标志位改为0
            break
    # 标志位为1,则质数个数加1
    if leap == 1:
        count += 1
        print(i)
    leap = 1

print('质数个数:', count)

分解质因数方法:

对n进行分解质因数,应先找到一个最小的质数k(最小的质数就是2),然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

n = int(input('please input a number:'))
l = []
while n>=2: #最小的质数是2
    for k in range(2, n+1):  #从最小的质数开始除
        if n%k == 0: #可以整除,则除之后跳出循环,再从最小的质数2除起,如果不能整除,则除3,偶数肯定都可以被2整除
            n = n//k #整除的话,商作为下一次的 n
            l.append(k)
            break

print(l)

或者:

n = int(input('please input a number:'))
l = []
k = 2  #从最小的质数2开始
while n != k:
    if n%k == 0:
        l.append(k)
        n = n/k
    else:
        k += 1
else:
    l.append(k)

print(l)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值