zoukankan      html  css  js  c++  java
  • c# 判断一个数是不是质数或者求一个数的公约数的算法

    一个数是不是质数,就是判断一个数除了1和它本身还有没有其他的约数,如果有则是合数,否则是质数。其实本质都是求公约数。

    求公约数是什么思路呢,就是找比它小的数不断尝试,能被整除则是其约数,否则继续尝试,直到确定所有数都找遍。本着这个思路,求公约数的算法如下:

    public static List<long> GetGYS(long num)
        {
            if(num==1)
                return new List<long>(){1};
            var list=new List<long>(){1,num};
            long temp=2,end=num/temp;
            while(temp<end){
                if(num%temp==0)
                    list.Add(temp);
                temp++;
                end=num/temp;
            }
            return list;
        }

     后来想了想,如果单纯求是否为质数,其实还可以更快速一些,把步进调整为2,如下:

        public static bool CheckedIsZS(long num)
        {
            if(num<=3)
                return true;
            if(num%2==0)
                return false;
            long temp=3,end=num/temp;
            while(temp<end){
                if(num%temp==0)
                    return false
                temp+=2;
                end=num/temp;
            }
            return true;
        }
  • 相关阅读:
    ROS 学习遇到的问题记录(持续更新)
    09.07 jQuery 随意整理
    JavaScript 随意整理3
    JavaScript 随意整理2
    css 随意整理 08.08
    html 随意整理
    vue day2
    vue day1
    【copy】必备之常用正则表达式 By 其他博主
    note.js 笔记第二课
  • 原文地址:https://www.cnblogs.com/lcawen/p/10504759.html
Copyright © 2011-2022 走看看