2.素数判定(算法2)2021.11.8

   //传入一个正整数n,判断该数是否是素数

    1.素数首先要大于=2
    //素数是指只能被自身或1整除的数叫做素数

 private bool 是否素数1(int n)
    {
        int time = n;
        bool IsOn = false;
        if (n <= 1)
        {
            return false;
        }
        for (int i = 2; i < time; i++)
        {
            if (n % i == 0)
            {
                return false;
            }
        }
        return true;
    }

解法1:试除法。

1.如果n<1,直接返回false。

2.用n除2-n中间的数,进行求余运算,如果余数==0则说明n不是一个素数。直接返回false。

遍历完如果还未找到能被整除的数,说明N是一个素数,直接返回true。

  private bool 是否素数1(int n)
    {
        float time =Mathf.Sqrt(n);
        if (n <= 1)
        {
            return false;
        }
        for (int i = 2; i <=time; i++)
        {
            if (n % i == 0)
            {
                return false;
            }
        }
        return true;
    }

优化思路。

因子:假如一个数n除以m,结果是无余数的整数,说明m就是n的因子。

m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 

 之间的每一个整数去除就可以了。如果 m 不能被 2 ~ 

 间任一整数整除,m 必定是素数

原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于 

,另一个大于或等于 

。例如 16 能被 2、4、8 整除,16=2*8,2 小于 4,8 大于 4,16=4*4,4=√16,因此只需判定在 2~4 之间有无因子即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值