C# 判断质数的2种基本方法

质数(prime number)又称素数,有无限个。

质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数

目前学习了判断数字n是否为质数的2种基本方法:

一、计数法

根据定义,既然质数只能够被1和他本身整除。我们可以统计出1到n范围内的整数,能够整除n的个数。再判断这个个数是否等于2就可以知道n是不是质数。

代码如下:

int n = int.Parse(Console.ReadLine()); ;
            int sum = 0;
            for (int i = 1; i <= n; i++)
            {
                if (n % i == 0)
                {
                    sum += 1;
                }
            }
            if (sum == 2)
            {
                Console.WriteLine("n是质数");
            }
            else
            {
                Console.WriteLine("n不是质数");
            }

二、查找法

可以查找2 到n-1范围内所有的数去除n,如果能够整除,这表明这个数不是质数。

代码如下:

int n = int.Parse(Console.ReadLine()); ;
            bool isFind = false;
            for (int i = 2; i <= n - 1; i++)
            {
                if (n % i == 0)
                {
                    isFind = true;
                    break;
                }
            }
            if (!isFind)
            {
                Console.WriteLine("n是质数");
            }
            else
            {
                Console.WriteLine("n不是质数");
            }

思考:

计数法需要判断1到n范围内的所有整数是够能整除n,如果n的值比较大相应的计算量就较大。

查找法一旦找到2到n-1范围内第一个能够整除n的数就会跳出循环,但是如果要判断出质数也要所有的都除一遍都不能整除才能得出是质数的结论,如果n的值比较大也同样会面对计算量就较大的问题。

如果一个程序中有多次判断质数,再在这些结论的基础上运行下一步程序,整个程序运行速度就会慢。比如哥赫巴德猜想(任何大于2的偶数都可以分解成2个质数的和)中如果输入的数为7位数或8位数,程序明显会慢很多才能运行完。

总的来说,计算机只能按照设定的程序来执行,算法需要人来优化。

原文地址:https://www.cnblogs.com/codingFiend/p/9165056.html

时间: 2024-10-14 08:09:51

C# 判断质数的2种基本方法的相关文章

判断质数的几种方法

根据维基百科定义,质数(Prime number),又称素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数).比1大但不是素数的数称为合数.1和0既非素数也非合数.质数在公钥加密算法(如RSA)中有重要的地位. 下边将会介绍几种较为常见的判断质/素数的方法: 1. 法一:最直接也最笨的方法 法一是按照质数的定义来考虑的,具体程序见下: 1 //*********************************** method 1 **

判断质数的两种方法

<!--方法一, 删选法,通过排除有倍数关系的数--><script type="text/javascript"> var arr = []; for(var i = 2; i < 200; i ++){ for(var j = 2 * i; j < 200; j += i){ arr[j] = true; } } for(var i = 2; i < 200; i ++){ if(arr[i] == undefined){ document

字符串--java中判断字符串是否为数字的方法的几种方法?

ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.u

java中判断字符串是否为数字的方法的几种方法

Java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.

判断质数的方法

<?php header("Content-type: text/html; charset=utf-8"); /* 一个数,如果只有1和它本身两个因数,这样的数叫做质数(或素数). 例如 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数或合数. 判断某个自然数是否是素数最常用的方法就是试除法——用比该自然数的平方根小的正整数去除这个自然数, 若该自然数能被整除,则说明其非素数. */ function sushu($a,$b) { for($i=$a;$i&l

如何判断质数?

质数,又称"素数",质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 现在,ljn教大家如何用程序判断质数. 1.一般,大家在程序中判断质数都是写一个函数,函数中循环从2到这个数的算数平方根枚举,看看这个数是否能整除枚举的数,如果能,则是质数,反之合数. C Code: int pd(int n) {    int i;    for(i=2; i<=floor(sqrt(n)); i++)         if(n%i==0) return 0;    retu

JavaScript中正则表达式判断匹配规则以及常用的方法

JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可

iOS 几种加密方法

iOS常见的几种加密方法 普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 1.base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组表示数据,改为 6个bit一组表示数据,不足的部分补零,每 两个0 用 一个 = 表示 用base64 编码之后,数据长度会变大,增加了大约 1/3 左右.(8-6)/6可进行反向解密 Xcode7.0 之后出现的 编码有个非常显著的特点,末尾有个 = 号 将文件进行加密 /

php:undefined index的几种解决方法

平时用$_post[''],$_get['']获取表单中参数时会出现Notice: Undefined index: --------: 虽然可以通过设置错误显示方式来隐藏这个提示,但是这样也有隐患,就是在服务器的日志中会记录这些提示,导致日志文件异常庞大. 通过在网上搜索和自己自身的实战总结几种解决方法: 方法1:服务器配置修改 修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE 方法2:对变量进行初始化. 方法3:做判断isset($_post