一个数是否是质数,就是判断一个数除了1和它自己还有没有其余的约数,若是有则是合数,不然是质数。其实本质都是求公约数。算法
求公约数是什么思路呢,就是找比它小的数不断尝试,能被整除则是其约数,不然继续尝试,直到肯定全部数都找遍。本着这个思路,求公约数的算法以下:spa
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,以下:code
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; }