C#工具类之素数扩展类
/// <summary>
/// 素数帮忙类
/// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码
/// https://referencesource.microsoft.com/#mscorlib/system/collections/hashtable.cs,e8668bf19da49963
/// Hashtable.cs里
/// </summary>
public class PrimeHelper
{
/// <summary>
/// 给定一些素数(除了2)
/// </summary>
public static readonly int[] Primes = {
, , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , ,
, , , , , , , , , , , , ,
, , , , , , , , , , , ,
, , , , , , , , }; /// <summary>
/// 判断是否是素数
/// </summary>
/// <param name="candidate"></param>
/// <returns></returns>
public static bool IsPrime(int candidate)
{
//偶数当然不是素数
if ((candidate & ) != )
{
int limit = (int)Math.Sqrt(candidate);
for (int divisor = ; divisor <= limit; divisor += )
{
if ((candidate % divisor) == )
return false;
}
return true;
} //2是素数
return (candidate == );
} /// <summary>
/// 大于给定数的最小素数
/// </summary>
/// <param name="min"></param>
/// <returns></returns>
public static int GetPrime(int min)
{
if (min < )
{
throw new ArgumentException("给定数必须是自然数");
} //先从给定数组里找
foreach (int prime in Primes)
{
if (prime >= min)
{
return prime;
}
} //给定数组里没有相应的素数,则循环找
//如果min是偶数,则起始值为加1,否则起始值为本身
for (int i = (min | ); i < Int32.MaxValue; i += )
{
if (IsPrime(i) )
return i;
} return min;
} /// <summary>
/// 获取最小素数(2除外)
/// </summary>
/// <returns></returns>
public static int GetMinPrime()
{
return Primes[];
} }
C#工具类之素数扩展类的更多相关文章
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
- C#工具类之字符串扩展类
/// <summary> /// 字典串帮忙类 /// </summary> public static class StringHelper { /// <summa ...
- C#工具类之字典扩展类
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- c#工具类之Int扩展类
public static class IntHelper { /// <summary> /// 转换为2进制字符串 /// </summary> /// <param ...
- C#工具类之XmlNode扩展类
using System; using System.Linq; using System.Xml; /// <summary> /// XmlNodeHelper /// </su ...
- C#工具类之日期扩展类
/// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...
- ios开发总结:Utils常用方法等收集,添加扩展类,工具类方法,拥有很多方便快捷功能(不断更新中。。。)
BOBUtils 工具大全 本人github开源和收集功能地址:https://github.com/niexiaobo [对ios新手或者工作一年以内开发人员很有用处] 常用方法等收集.添加扩展类. ...
- DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集
复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...
- 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)
参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...
随机推荐
- VS运行release版本正常,直接执行exe文件会出现问题
博客转载自:https://blog.csdn.net/weixinhum/article/details/39962483 检测了一下自己的程序,发现程序先后开启了两个线程,并且对两个线程的启动顺序 ...
- RabbitMQ(pika模块)
RabbitMQ 基础 2 3 4 5 6 7 8 安装配置epel源 $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-r ...
- PHP学习笔记之continue与break
百度中有人这样解释:break是结束整个循环体,continue是结束单个循环体.昨天看燕十八老师PHP视频,讲到break,continue时,举了一个例子,理解更容易.天龙八部中,西夏国公主选婿, ...
- 推荐一款基于XNA的开源游戏引擎《Engine Nine》
一.前沿导读 XNA是微软基于.Net部署的下一代3D/2D游戏开发框架,其实XNA严格来说类似下一代的DirectX,当然不是说XNA会取代DirectX,但是基于XNA我们对于面向XBOX360, ...
- DataAnnotationsModelValidator-基于数据注解方式的model验证器
http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html http://www.cnblogs.com/artech/ar ...
- Terminologies in MVC: Part 2 (Razor Engine Syntax vs Web Form)
By Abhishek Jaiswal :) on Mar 21, 2015 In this article we learn about Razor Engine Syntax vs Web For ...
- 编写高质量代码改善C#程序的157个建议——建议6: 区别readonly和const的使用方法
建议6: 区别readonly和const的使用方法 很多初学者分不清readonly和const的使用场合.在我看来,要使用const的理由只有一个,那就是效率.但是,在大部分应用情况下, “效率” ...
- UltraEdit 回车符替换空格
查找和替换 输入 ^r^n 替换为:(空格)
- windowsPhone一些不常见控件
1.InkPresenter:可以产生手写效果的控件. http://www.cnblogs.com/randylee/archive/2010/08/10/1791222.html 2.Thumb: ...
- asp.net winform 界面传值
第一种 //form1 //静态传值 public static string Chuanzhi; string Chuanzhi = textbox.text; //form2 string Chu ...