首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ACM算法日常

    素数判定(素数)- HDU 2012

    刚学编程的时候,我们大多需要做的一道题,那就是用C语言来判定一个数是否是素数。 那时候很自然的会想到,对于数n,直接遍历一下n以下的数x,如果n%x等于0,说明可以被整除,也就不是素数。 从定理2可知,如果一个整数不能被小于或等于其平方根的素数整除,则它就是素数 。 OK,我们的第二种解法就是遍历小于sqrt(n)的数。 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。 Output 对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。

    1.7K10发布于 2018-08-07
  • 来自专栏freesan44

    PTA 7-4 素数等差数列 (20 分)

    题目 2004 年,陶哲轩(Terence Tao)和本·格林(Ben Green)证明了:对于任意大的 n,均存在 n 项全由素数组成的等差数列。 例如 { 7,37,67,97,127,157 } 是 n=6 的解。本题就请你对给定的 n 在指定范围内找出一组最大的解。 输入格式: 输入在一行中给出两个正整数:n(≤10)为等差素数数列的项数; MAXP (2≤MAXP<10 5 )为数列中最大素数的上界。 若解不存在,则输出不超过 MAXP 的最大素数。同行数字间以一个空格分隔,行首尾不得有多余空格。

    33620编辑于 2021-12-06
  • 来自专栏ReganYue's Blog

    【PTA】7-1 素数对猜想 (20point(s))

    #include #include bool isprime(int n){ if(n<=1) return false; for(int i=2;i*i<=n;i++){ if(n%i==0) return false; } return true; } int main(){ int n,sum=0,lastprime=2; scanf("%d",&n); for(int i=1;i<=n;i++){ if(isprime(i)){ if(i-lastprime==2)

    42320发布于 2021-09-16
  • 来自专栏freesan44

    PTA 7-4 素数等差数列 (20 分)

    题目 2004 年,陶哲轩(Terence Tao)和本·格林(Ben Green)证明了:对于任意大的 n,均存在 n 项全由素数组成的等差数列。 例如 { 7,37,67,97,127,157 } 是 n=6 的解。本题就请你对给定的 n 在指定范围内找出一组最大的解。 输入格式: 输入在一行中给出两个正整数:n(≤10)为等差素数数列的项数; MAXP (2≤MAXP<10 5 )为数列中最大素数的上界。 若解不存在,则输出不超过 MAXP 的最大素数。同行数字间以一个空格分隔,行首尾不得有多余空格。

    35900发布于 2021-09-10
  • 来自专栏ypw

    素数筛选

    所谓素数,就是除了一跟本身不能被奇因子整除 那么就直白的思路就是 bool isp(int x){ if(x<2) return false else{ for(int i=2;i*i<x;i+ 那么我们来看一种比较高效的思维 思路:我们知道素数的倍数肯定不是素数,所以的话,我们将素数的倍数置为1,经过这一系列处理后,遍历输出为0的即求出了N以内的所有素数

    1.6K30发布于 2020-09-11
  • 来自专栏ypw

    素数

    题意:从一个含有n个元素的数组中挑选出k个相加,看结果是否为素数。计算其中素数个数。 思路:递归表示全排列。

    86560发布于 2020-09-11
  • 来自专栏blog(为什么会重名,真的醉了)

    数论-素数

    文章目录 判断素数 筛法求素数 例题 HDU-1262 HDU-3792 判断素数 ---- 枚举 [2 , x ] bool prime(int x) { if (x <= 1)return false 由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的. Input 输入中是一些偶整数M(5<M<=10000). Sample Input 20 30 40 Sample Output 7 13 13 17 17 23 枚举判断素数 #include<bits/stdc++.h> using namespace Sample Input 1 5 20 -2 Sample Output 0 1 4 若两个素数相差2则称为一对孪生素数,求区间[1,n]内的孪生素数个数。 筛法素数打表,然后判断孪生,用前缀和记录。

    82530发布于 2020-09-15
  • 来自专栏JetPack

    素数求和

    200万以内素数求和 这是刚开始写的代码,有点长。 #include <stdio.h> #include <math.h> /* 200万以内素数求和 */ int main() { int i; long long int p=0; int = 5)//如果是素数,必然在6的旁边 continue; tmp=sqrt( num); for(i=2;i <=tmp; i++ )//在6的旁边也不一定是素数,再次进行判断 } printf ("%lld",p); return 0; } 最后看到了网上一个代码,效率极高 然后敲了一遍 思路借鉴之点击打开链接 #include <stdio.h> /* 2000万内素数求和 =1) continue; for (j=i*i;j<=n;j+=i)//进行标记 a[j]=1; } for (i=2;i<=n;i++) if (a[i]==0)//未标记的即为素数

    1.3K30编辑于 2022-02-09
  • 来自专栏分享学习

    素数环-dfs+素数打表

    素数环-dfs+素数打表(易理解) #include<stdio.h> #include<string.h> int a[50],b[50],vis[50],n; void prime(){ //素数打表 memset(a,0,sizeof(a)); a[0]=a[1]=1; //素数为0非素数为1 for(int i =2;(! a[i])&&i<50;i++) //a[i]=1表明是素数,则其倍数也是素数因为i就是前边的素数的倍数 for(int j=i+i;j<50;j+=i) a[j]=1; } bool dfs (int num){ for(int j=2;j<=num;j++){ if(a[b[j-1]+b[j]]) return false;//如果相邻的两个相加不是素数就返回 } if(num==n){ //当个数够n个之后就查看最后一个和第一个相加是否是素数 if(!

    80810发布于 2020-03-24
  • 来自专栏算法与编程之美

    求取素数

    1 引言 在数学中经常要求你寻找素数,在100以为都比较容易解决,但是当超过一百时就比较难解决了,现在我们可以通过计算机来轻松实现它。 2 问题 取某个范围内的素数 3 方法 通过for循环的使用帮助我们顺利解决问题。 4 实验结果与讨论 通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

    55110编辑于 2022-04-08
  • 来自专栏全栈程序员必看

    素数

    package 算法; public class 求素数 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(0.0 *0.0 <=0.0); //素数,除了1和自己不能被其他数整除的数 int count=0; //计算101至200间的素数 for(int i =101 ;i<200;i++){ //从2开始遍历不能被整除的数 break; } if(j+1==i){ System.out.println(i+”是素数 count++; } } } System.out.println(“素数的个数

    83400编辑于 2022-08-09
  • 来自专栏Lan小站

    素数

    第二题:组素数 题目描述 素数就是不能再进行等分的数。比如:2 3 5 7 11 等。 9 = 3 * 3 说明它可以3等分,因而不是素数。 我们国家在1949年建国。 ,那么,你能组成多少个4位的素数呢? 比如:1949,4919 都符合要求。 请你提交:能组成的4位素数的个数,不要罗列这些素数!! .*; public class zusushu { /** * 组素数 * @param args */ public static void main(String[] args)

    66510编辑于 2022-07-13
  • 来自专栏Vincent-yuan

    孪生素数

    题目描述 所谓孪生素数指的是间隔为2的相邻的素数,他们之间的距离已经近得不能再近了,就像孪生兄弟一样,最小的孪生素数是(3,5),在100以内还有(5,7),(11,13),(17,19),(17,19 但随着数字的增大,孪生素数的分布越来越稀疏,寻找起来也变得困难,那会不会在超过某个界限之后就再也没有孪生素数了呢? 孪生素数有无穷多个! 排除2和3倍数的办法:2和3的倍数以6为周期的周期性分布,比如6-11之间,不是2和3倍数的只有7(6+1)和11(6+5),12-17之间,只有13(6*2+1)和(6*2+5), 只有6*n+1和6 *n+5的数不能被2或者3整除,才可能为素数,因此,我们把需要处理的数据初始化为2,3,5,7,11,13,17,19,23,25..., 此时,已经不用关心2和3的倍数,从5开始处理,将5*5,5*7,5 *11...设置为非素数,然后是7*7,7*11,7*13... // 由于排除了2和3的倍数,数组位置跟数字之间已经不是一一对应的,增加位置与数字之间的转换方法计算一下即可 java代码实现 import

    1.2K50发布于 2020-07-01
  • 来自专栏Don的成长史

    回文素数

    本文链接:https://blog.csdn.net/weixin_42449444/article/details/88246612 题目描述: 如果一个整数只能被1和自己整除,就称这个数是素数。 例如:6, 66, 606, 6666 如果一个数字既是素数也是回文数,就称这个数是回文素数 牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。 输出描述: 输出一个整数,表示区间内回文素数个数。 输入样例: 100 150 输出样例: 2 解题思路: 爱奇艺校招的一道水题,写俩个功能函数,一个用来判断是不是回文数,另一个用来判断是不是素数。 然后无脑for循环统计[L,R]这个区间内有多少回文素数就行了。

    1.2K20发布于 2019-11-08
  • 来自专栏同步文章1234

    【C素数素数(质数)和分解质因数

    语言的时候遇到质因数,发现这个知识点忘记了,故有了此篇 先来复习一下概念吧: 一.素数 1-1.基本概念: .质数:质数又叫素数素数是指在正整数范围内,大于0并且只能被1和自身整除的数 1不是素数 ,最小的素数是2 举20以内的素数为例:2, 3,5 , 7,11, 13, 17, 19 1-2.题目描述: 给你一个数,判断他是否是素数? , 16,,18 , 20 关于素数和合数的概念小趣味知识: 1.1既不是素数又不是合数 2.大于2的素数都是奇数,2是唯一是偶数的素数 3.大于1的整数中,不是素数就是合数 3.最小的素数和合数都是偶数 速戳分解质因数链接 质数不能分解质因数的原因:质数只能写成1和他本身相乘的形式,而1不是质数, 例如将42分解质因数:42=237 因此最大质因数就是7 除到7后2-sqrt(7)内的数都不能再被整除 for (int i = 2; i < sqrt(n); i++) { if (n % i == 0) { return fun(n/i); } } return n;//7是从这里出来的嘻嘻

    1.5K40编辑于 2023-01-16
  • 来自专栏全栈程序员必看

    素数定理整合_素数定理简单证明

    埃拉托色尼筛法 基本素数判别法: 正整数n是素数,当且仅当他不能被任何一个小于sqrt(n) 的素数整除 定理: 如果m是一个合数,那么n一定有一个不超过sqrt(n)的素因子 推论: 如果n是一个合数 ,那么n必有小于等于sqrt(n)的素因子 6N+1法 任何数都可以构造成6N+1,6N+2,6N+3,6N+4,6N+5 只有形如:6N+1和6N+5有可能是素数,其中2,3是特殊的 const int

    70650编辑于 2022-09-20
  • 来自专栏码神随笔

    素数判断——数论

    今天的题还是有点难度的,毕竟剑指offer不是吃素的,我感觉这个题目应该十分接近蓝桥杯的难度了,或者是已经超过了蓝桥杯的难度,但是刷的题中题,方为人中人,发车了

    38820编辑于 2022-12-13
  • 来自专栏前端儿

    素数求和问题

    素数求和问题 描述 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。 接下来的N个数为要测试的数据,每个数小于1000输出每组测试数据结果占一行,输出给出的测试数据的所有素数和样例输入 3 5 1 2 3 4 5 8 11 12 13 14 15 16 17 18 10

    64810发布于 2018-09-03
  • 来自专栏数据结构与算法

    10:素数

    10:素数对 总时间限制: 1000ms 内存限制: 65536kB描述 两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。 输入一个正整数n。 输出所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。 样例输入 100 样例输出 3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73 1 #include<iostream> 2 #include<cstdio > 3 #include<cstdlib> 4 using namespace std; 5 int b[10001]; 6 int now; 7 int n; 8 void find(int

    2K50发布于 2018-04-03
  • 来自专栏我是东东强

    素数筛选算法

    ,思想也不复杂:当一个数为素数的时候,它的倍数肯定不是素数。 2$ $3 \times 3$ 4 $4 \times 2$ 5 $5 \times 2$ $5 \times 3$ $5 \times 5$ 6 $6 \times 2$ 7 $7 \times 2$ $7 \times 3$ $7 \times 5$ $7 \times 7$ 8 $8 \times 2$ 9 $9 \times 2$ $9 \times 3$ 10 $10 \times 2$ 11 $11 \times 2$ $11 \times 3$ $11 \times 5$ $11 \times 7$ $11 \times 11$ 第一列即筛除掉全部以 参考资料 ---- [1]菜鸟学线性筛素数 [2]欧拉筛法找素数 [3]求1000000以内的素数 [4]线性时间内筛素数和欧拉函数

    1.4K20发布于 2018-08-01
领券