素数

C语言-素数的查找

主宰稳场 提交于 2019-12-19 10:11:43
素数:是指只能整除1和它自己本身,也就是说只有1和本身两个因子: 代码如下: # include <stdio.h> # include <math.h> main ( ) { int i , num ; for ( num = 1 ; num <= 1000 ; num ++ ) //这里是查找1~1000之间的素数// { for ( i = 2 ; i <= sqrt ( num ) ; i ++ ) { if ( num % i == 0 ) break ; } if ( i > sqrt ( num ) ) printf ( "素数:%d\n" , num ) ; } } 第一个for(num=1;num<=1000;num++)是完成对1~1000的遍历,而第二个for(i=2;i<=sqrt(num);i++)是检查当前数值num能不能整除 2到num均方根的整数,一旦能够整除就说明整数num有除了1和本身之外的因数,就说明了它不是素数,如果到最后都没有找到其他因子,此时i的值就会大于sqrt(num),可以根据这个关系输出素数; 至于为什么是2~sqrt(num),其实一个数(num)等于两个整数的乘积,则这两个数是一个大于sqrt(num),一个小于sqrt(num)(也可以是两个都等于sqrt(num)),所以说为了节省运算,就只用在小于sqrt(num

20190905-3 命令行和控制台编程

笑着哭i 提交于 2019-12-17 03:03:42
此作业的要求参见 [https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523] 1.熟悉 命令行和控制台 假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt, 请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分) a.exe < b.txt > c.txt 答:将b中的文本内容输入到a程序中,经运行保存到文本c中。 请用C言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例(6分) d.exe a=1 b=2 c=3 1 2 3 d.exe a=11 b=22 c=33 11 22 33 答: #include<stdio.h> int main() { int a,b,c; scanf("a=%d b=%d c=&d",&a,&b,&c);//输入三个数 printf("%d\n%d\n%d\n",a,b,c);//输出三个数 return 0; } 2.熟悉 测试用例 (1)请在网站 [https://pintia.cn/]注册账号。(0分) (2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、 3.用户名(此例中为 Young)。(30分)

JavaScript打印素数

好久不见. 提交于 2019-12-16 19:52:45
<!doctype html> <html> <head> <meta charset="utf-8"> <title>素数</title> </head> <body> <script language="javascript"> function isPrime(n){ for(var i=2;i<=Math.sqrt(n);i++){ if(n%i==0) return false return true } } var n=prompt("input a number:",""); if(isPrime(n)){ document.write("the number is a prime"); } else document.write("the number is not a prime"); </script> </body> </html> 来源: CSDN 作者: 隔壁郑同学 链接: https://blog.csdn.net/weixin_44517301/article/details/103505022

1007 素数对猜想

隐身守侯 提交于 2019-12-16 04:21:52
刚学习Java的小白,只是单纯的想把PAT上面自己写的程序保留下来,有不足之处还请多多指教! 让我们定义d​n为:d​(n) =p(n+1)−p(n),其中p(i)是第i个素数。显然有d1​​ =1,且对于n>1有d(​n)是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N(<10的5次方),请计算不超过N的满足猜想的素数对的个数。 输入格式: 输入在一行给出正整数N。 输出格式: 在一行中输出不超过N的满足猜想的素数对的个数。 输入样例: 20 输出样例: 4 以下为代码: import java . util . ArrayList ; import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; int k = 0 ; int n = scanner . nextInt ( ) ; //此处原本超时了,百度了一下被一位大佬启发了,大佬用的c++ //大佬链接(大佬此处见解确实独特) //https://blog.csdn.net/Challenger_/article/details/88528308 for ( int

100以内的素数

孤街浪徒 提交于 2019-12-15 04:02:34
打印100以内的所有素数 public static void main ( String [ ] args ) { //打印100以内的所有素数 /*所谓素数:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数*/ for ( int i = 2 ; i < 100 ; i ++ ) { if ( i == 2 ) { System . out . println ( i + "是素数" ) ; } for ( int j = 2 ; j < i ; j ++ ) { if ( i % j == 0 ) { /*System.out.println(i+"不是素数");*/ break ; } if ( j == i - 1 ) { //当j循环到i-1的时候仍然没有除数,就输出i为素数 System . out . println ( i + "是素数" ) ; } } } } 来源: CSDN 作者: 丶龙卷 链接: https://blog.csdn.net/qq_32972565/article/details/103457993

1007 素数对猜想(python)

纵饮孤独 提交于 2019-12-15 01:09:51
1007 素数对猜想 (20分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。 输入格式: 输入在一行给出正整数N。 输出格式: 在一行中输出不超过N的满足猜想的素数对的个数。 输入样例: 20 输出样例: 4 import math k = int ( input ( ) ) a = k - 1 b = k - 3 sum = 0 while a != 1 and b != 1 : n = True m = True for i in range ( 2 , ( a // 2 ) + 1 ) : if a % i == 0 : n = False for i in range ( 2 , ( b // 2 ) + 1 ) : if b % i == 0 : m = False if n and m : sum = sum + 1 a = a - 1 b = b - 1 print ( sum ) 提交时运行超时,可参考其他博主进行改进 https://blog.csdn.net/stranger61/article/details/77341613

素数筛(欧式筛)

£可爱£侵袭症+ 提交于 2019-12-12 23:39:15
P3383 【模板】线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入格式 第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。 接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数。 输出格式 输出包含M行,每行为Yes或No,即依次为每一个询问的结果。 输入输出样例 输入 100 5 2 3 4 91 97 输出 Yes Yes No No Yes 说明/提示 时空限制:500ms 128M 数据规模: 对于30%的数据:N<=10000,M<=10000 对于100%的数据:N<=10000000,M<=100000 样例说明: N=100,说明接下来的询问数均不大于100且不小于1。 所以2、3、97为质数,4、91非质数。 故依次输出Yes、Yes、No、No、Yes。 AC代码 #include <stdio.h> #include <string.h> bool book[10000005]; int prime[10000005], p = 0; int isPrime(int n) { memset(book,true,sizeof(book)); book[0] = false; book[1] = false; for(int i = 2; i <= n; ++ i){

梅森素数

£可爱£侵袭症+ 提交于 2019-12-11 13:44:59
所谓梅森数,是指形如2p-1的一类数,其中指数p是素数,常记为Mp 。如果梅森数是素数,就称为梅森素数。 来源: CSDN 作者: 叶卡捷琳娜2号 链接: https://blog.csdn.net/weixin_43438700/article/details/103484761

构造素数表2

非 Y 不嫁゛ 提交于 2019-12-10 10:56:42
1 /* 2 构造素数表 3 思路: 4 欲构造n以内的素数表 5 1、令x为2 6 2、将2x、3x、4x直至ax<n的数标记为非素数 7 3、令y为下一个没有被标记为非素数的数,重复第二步; 8 4、直到所有的数都已经尝试完毕 9 10 伪代码: 11 欲构造n以内(不含)的素数表 12 1、开辟pirme[n],初始化其所有元素为1,prime[x]为1表示x是素数 13 2、令x=2 14 3、如果x是素数,则对于(i=2;x*i<n;i++)令prime[i*x]=0 15 4、令x++,如果x<n,重复3,否则结束 16 */ 17 #include<stdio.h> 18 19 int main(void) 20 { 21 const int maxNumber = 25; 22 int isPrime[maxNumber]; 23 for (int i = 0; i < maxNumber; i++) 24 { 25 isPrime[i] = 1; 26 } 27 28 for (int x = 2; x < maxNumber; x++) 29 { 30 if (isPrime[x]) 31 { 32 for (int i = 2; (i * x) < maxNumber; i++) 33 { 34 isPrime[i * x] = 0; 35 } 36 } 37

HRBUST - 2039 麦森数

試著忘記壹切 提交于 2019-12-09 23:29:13
题目链接:https://vjudge.net/problem/HRBUST-2039 题目描述: 形如2^p-1 的素数被成为麦森数,这时p一定是一个素数。但是这么命题的逆命题却不一定成立,即如果p是一个素数,2^p-1不一定是一个素数。到1998年底,人们已经找到了37个麦森数。最大的一个是P=3021377 ,它有909526位。麦森数有许多重要的应用,它与完全数密切相关。 现在给出P,计算2^p-1一共有多少位。 Input 本题有多组数据,输入处理到文件结束。 每组输入数据包括一个整数p。 p<=100000 Output 每组输出应该包括1行,包括一个整数n,表示2^p-1的位数。 Sample Input 1279 Sample Output 386 这题其实是一道数学题,首先我们要知道计算位数的话一种是循环计数,还有一种是用对数计数求以进制数为底n的对数再加1就是所求的数字的位数。 然后题目要计算的是2^p-1的位数,即lg( 2^p-1), 因为2的幂都是以2的倍数(2, 4, 6, 8)结尾的,所以其实计算(lg2^p) + 1就行了,然后我们用一个简单的变形, 变为(plg2) + 1就行了。 # include <set> # include <map> # include <stack> # include <queue> # include <cmath