python和C++实现素数判断

思路

  • 因为1比较特殊,是素数,所以小于等于1的数都返回false
  • 从2开始除,因为若i的平方已经大于n了,则n必定无法被i整除了,所以一定不为素数

算法

C++

int shu(int j){
    if(n<=1)return 0;
    for(int i = 2;i*i<=j;i++)
    {
        if(j%i==0)return 0;
    }
    return 1;//这个一定要放在外面,否则%2不为0时就直接结束循环了
}
int main(){
    //只循环1-200的数
    for(int j=1;j<200;j++){
        if(shu(j)){
            cout<<j<<endl;
        }
    }
    system("pause");
}

python

因为python在for循环上有很大区别,python的for循环无法实现i动态小于n的情况,所以按照情况分开讨论更加方便

  • 第一种情况相同
  • 2.3都为素数排除
  • 整除2.3的都排除
  • 剩下的需要排除能被奇数整除的情况了
    • 同样i*i<=n
    • 5、7、9(9%3==0)、11(5+6)、13、17(11+6)、19、23(17+6)……
n =  int(input())
def prime(n):
    if n<=1:return False
    if n<=3:return True
    if n%2==0 or n%3==0:return False
    i=5
    while i*i<=n:
        if n%i==0 or n%(i+2)==0:
            return False
        i+=6
    return True
print(prime(n))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值