數論基礎------質數板
阿新 • • 發佈:2020-07-21
#include <iostream> #include <cstring> #include <string> #include <cmath> #include <cstdio> #include <stdio.h> #include <cstdlib> #include <algorithm> #include <vector> #include <set> #include <map> #include <queue> #include <iomanip> #define pub(n) push_back(n) #define pob(n) pop_back(n) #define sf(n) scanf("%d",&n) #define pf(n) printf("%d\n",n) #define slf(n) scanf("lld",&n) #define plf(n) printf("lld\n",&n) #define rep(i,a,b) for(int i = a; i <= b ; i ++ ) #define pre(i,a,b) for(int i = a ; i >= b ; i --) #define ll long long #define PII pair<int,int> #define inf 0x3f3f3f3f3f3f3fll #define ull unsigned long long #define ios ios::sync_with_stdio(false),cin.tie(0) using namespace std; const int N = 510,mod=1e9+7; //determine whether it is a prime number bool is_prime(int n) { if(n<2) return false; for(int i=2;i<n/i;i++) //O(sqrt(n)) { if(n%i) return false; } return true; } void divide(int n) // decompose prime factors { rep(i,2,n) { if(n%i==0) { int s=0; while(n%i==0) { n/=i; s++; } printf("%d %d",i,s); } } } //optimized divide code void optimized_divide(int n) { rep(i,2,n/i) { int s=0; if(n%i==0) { n/=i; s++; } printf("%d %d",i,s); } if(n > 1) printf("%d %d\n",n,1); puts(""); } int primes[N],cnt; bool st[N]; //select primes of n numbers void get_primes1(int n) //olognlogn { rep(i,2,n) { if(!st[i]) { primes[cnt++]=n; for(int j=i+i;j<=n;j+=i) st[j]=true; } } } void get_primes2(int n) // 線性篩法 { rep(i,2,n) { if(!st[i]) primes[cnt++]=i; for(int j=0;primes[j]<=n/i;j++) { st[primes[j]*i]=true; //當prime[j]一定是i的最小質因子 if(i%primes[j]==0) break; //因此,prime[j]一定是 } } } int main() { ios; }