首页 > TAG信息列表 > primes

数学知识1.1

一、简述 本文章主要介绍有关质数的基础算法。 二、质数 质数和合数是针对所有大于1的自然数来定义的,小于等于1的整数既不是质数也不是合数。 质数的因子只有1和它本身。 三、质数的判定——试除法 设一个数 n,因为质数的因子只有1和它本身,我们可以使用枚举从2 ~ n-1的方式,判断其

谷歌的招聘

https://www.acwing.com/problem/content/1648/ 思路: 如果单纯的用试除法去做,可能会超时,我们在这里先弄出来根号内的所有质数,然后用质数来做。 #include <iostream> #include <cstring> using namespace std; const int N = 1010, M = 40000; int n, k; bool st[M]; int prime

质数

相邻质数距离 https://www.acwing.com/problem/content/198/ #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int N = 1000010; int primes[N], cnt; bool st[N]; void init(int n) {

LeetCode 204 Count Primes 欧拉(素数)筛

Given an integer \(n\), return the number of prime numbers that are strictly less than \(n\). Solution 统计小于 \(n\) 的素数个数。这里用欧拉筛来筛素数,\(is\_prime\) 用来记录该数是否为素数,\(prime\) 来保存所有的素数 点击查看代码 class Solution { private: bo

1020 [SDOI2008]仪仗队 素数筛新模板 欧拉函数

链接:https://ac.nowcoder.com/acm/contest/26656/1020来源:牛客网 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练。 仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队

1005 Forsaken喜欢数论 素数筛性质 数论

  链接:https://ac.nowcoder.com/acm/contest/26656/1005来源:牛客网 题目描述 Forsaken有一个有趣的数论函数。对于任意一个数xx,f(x)f(x)会返回xx的最小质因子。如果这个数没有最小质因子,那么就返回0。 现在给定任意一个nn,Forsaken想知道\sum_{i = 1}^{n}{f(i)}∑

筛质数(三种做法)

通常针对多个数 筛质数 给定一个正整数 $ n $,请你求出 $ 1 \sim n $ 中质数的个数。 输入格式 共一行,包含整数 $ n $。 输出格式 共一行,包含一个整数,表示 $ 1 \sim n $ 中质数的个数。 数据范围 $ 1 \le n \le 10^6 $ 输入样例: 8 输出样例: 4 想法 三种筛法: 1. 朴素筛法 2. 埃

B - Primes

这道题正常的做法是筛一次素数,然后遍历即可 #include <iostream> using namespace std; const int N = 1e7 + 10; bool st[N]; int p[N], cnt; void get() { st[1] = 1; for (int i = 2; i <= N; i++) { if (!st[i]) p[++cnt] = i; for (int

AcWing 1317. 树屋阶梯

题目传送门 一、题目分析 考虑以阶梯左下角那个点为第一个钢材的左下角,那么第一个钢材摆放情况便如下图(以 \(n = 5\) 为例) 对每种情况分别讨论,那么问题都被分成了两个子问题,设\(f[n]\)表示摆放高度为\(n\)的台阶的方法数,那么: \[\large f[5]=f[4]*f[0]+f[3]*f[1]+f[2]*f[2]+f[1]*f

ABC 250 | D - 250-like Number

题目描述 给定一个数\(N\),找出\([1, N]\)范围内,可以表示成\(p \times q^3\)的形式的数的个数,其中\(p < q\)且\(p\)、\(q\)均为质数。 数据范围 \(1 \le N \le 10^{18}\) 题目解析 首先观察数据范围发现不可以枚举\(i, i \in [1, N]\),然后判断该数是否满足题目描述性质。考虑逆向思

初等數論入門(搬運)

#define maxp 65536 #define ll long long int primes[maxp]; bool notprime[maxp]; // 1 void Eratosthenes() { notprime[1] = true; primes[0] =

LeetCode 0204 Count Primes

原题传送门 1. 题目描述 2. Solution 1 1、思路分析 枚举。写个判断n是否为质数的函数。遍历n,计数。TLE 2、代码实现 package Q0299.Q0204CountPrimes; // TLE public class Solution { public int countPrimes(int n) { if (n < 3) return 0; int cnt = 0;

线性筛法求素数

    时间复杂度为 O(n)! #include<bits/stdc++.h> using namespace std; const int N = 10e6 + 10; int primes[N]; bool book[N]; void get_primes(){ int cnt = 0; for(int i = 2; i <= N; i++){ if(!book[i]) primes[++cnt] = i; for(int j = 1; i * primes[j

09. 素数筛&质因数分解

目录09. 素数筛&质因数分解素数筛法质因数分解P1075 [NOIP2012 普及组] 质因数分解P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题P3383 【模板】线性筛素数P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 09. 素数筛&质因数分解 素数筛法 素数筛其实就是 判断 1~N 中有哪

质因数(素因数)分解(Java实现)

质因数(素因数)分解(Java实现) 算术基本定理(唯一分解定理) 每个大于1的自然数,要么本身就是质数,要么可以写为2个或以上的质数的积,而且这些质因子按大小排列之后,写法仅有一种方式。   代码实现(Java) import java.util.ArrayList; import java.util.List; /** * 求素数,素因式分解 */ pu

Game of Primes (博弈)

思路: 找一个人作为带入,我就是他。(选择情况数少的) Alice 想想一些让别人浴霸不能的步骤和做法,看看这个做法能不能让自己赢,不行的话自己就不能赢。(自己取胜的条件本来就处于劣势) 就是 x-1,y-1, 他选x,我就选y,他选y,我就选x。 attention: 1 初始情况可能要特判,更具自己的代码 Alice an

埃氏筛

   我们把从1~n中的数从小到大枚举,在枚举数字i的时候,我们同时要把1~n中所有i的倍数筛掉,这样一直到最后,剩下的数就是1~n中所以的质数。 Code: #include <iostream> using namespace std; const int N = 1000010; int primes[N]; bool st[N]; int n, cnt; void get_primes(int x

acwing 868. 筛质数

题目描述 给定一个正整数 n,请你求出 1∼n中质数的个数。 输入格式 共一行,包含整数 n。 输出格式 共一行,包含一个整数,表示 1∼n中质数的个数。 数据范围 1≤n≤106 输入样例: 8 输出样例: 4 质数筛算法求解 分析 分为两种 朴素的筛法(埃式筛法):找到一个质数,然后把1-n内该质数的所

PAT-1015 Reversible Primes

1015 Reversible Primes (20 分) A reversible prime in any number system is a prime whose “reverse” in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime. Now given any tw

数学知识——质数筛

一:判定质数以及分解质因数 1.试除法判定质数O(sqrt(n)):   质数是除1和本身以外,不能被任何数整除的数。     试除法判定 m 是否为质数的过程:     1.先特判 m==2 和 1 的情况     2. for 循环从 i = 2 遍历到 m / i ,如果期间有 i 能整除 m ,则不是质数。如果循环结束了,则证

数学知识相关题目

质数 质数的定义:在大于1的整数中,如果只包含1和本身这两个约数就被成为质数或者叫做素数 试除法判定质数 #include <iostream> #include <algorithm> using namespace std; //如果i能被n整除,那么d/i也一定可以被n整除 bool is_prime(int x) { if (x < 2) return false;

acwing 196

#include <bits/stdc++.h> #define IOS ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) #define _zero(a) memset(a, 0, sizeof(a)) #define endl '\n' #define int long long #define mp make_pair #define PII pair<int, int> #define x firs

7-156 Sexy Primes (20 分)

Sexy primes are pairs of primes of the form (p, p+6), so-named since "sex" is the Latin word for "six". (Quoted from http://mathworld.wolfram.com/SexyPrimes.html) Now given an integer, you are supposed to tell if it is a sexy prime. In

筛质数

#include <iostream>using namespace std;const int N=100010;int primes[N],cnt;bool st[N];int n;//埃氏算法O(nloglogn) void get_primes(int n){ for(int i=2;i<=n;i++) { if(!st[i]) { primes[cnt++]=i; for(int j=i+i;j<=n;j+=i) st[j]=true; } } for(i

线性筛法

#include <iostream>using namespace std;const int N=100010;int primes[N],cnt;bool st[N];int n;void get_primes(int n){ for(int i=2;i<=n;i++) { if(!st[i]) primes[cnt++]=i; for(int j=0;primes[j]<=n/i;j++) { st[primes[j]*i]=true; if(i%prime