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;
        }
  • 相关阅读:
    oracle之同义词
    oracle之序列
    oracle之视图
    oracle表空间
    oracle 闪回技术
    oracle权限管理
    oracle的undo表空间
    创建数据库之间的连接
    oracle监听
    oracle11g文件系统库迁移到ASM库上面
  • 原文地址:https://www.cnblogs.com/lcawen/p/10504759.html
Copyright © 2011-2022 走看看