AOJ - 0009 Prime Number (素数筛法) && AOJ - 0005 (求最大公约数和最小公倍数)

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34870

求n内的素数个数。

 1 /* ***********************************************
 2 Author        : zch
 3 Created Time  :2015/5/19 8:46:16
 4 File Name     :a.cpp
 5  ************************************************ */
 6
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <iostream>
10 #include <algorithm>
11 #include <vector>
12 #include <queue>
13 #include <set>
14 #include <map>
15 #include <string>
16 #include <cmath>
17 #include <cstdlib>
18 #include <ctime>
19 using namespace std;
20 typedef long long ll;
21 const int maxn = 1000005;
22 int prime[maxn];
23 bool is_prime[maxn];
24
25 int solve(int n) {
26     int p=0;
27     for(int i=0;i<=n;i++) is_prime[i]=true;
28     is_prime[0]=is_prime[1]=false;
29     for(int i=2;i<=n;i++) {
30         if(is_prime[i])
31         {
32             prime[p++]=i;
33             for(int j=2*i;j<=n;j+=i)
34                 is_prime[j]=false;
35         }
36     }
37     return p;
38 }
39
40 int main()
41 {
42     //freopen("a.txt","r",stdin);
43     //freopen("b.txt","w",stdout);
44     int n;
45     while(~scanf("%d",&n)) {
46         printf("%d\n",solve(n));
47     }
48     return 0;
49 }

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=30390

 1 /* ***********************************************
 2 Author        : zch
 3 Created Time  :2015/5/19 9:53:16
 4 File Name     :a.cpp
 5  ************************************************ */
 6
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <iostream>
10 #include <algorithm>
11 #include <vector>
12 #include <queue>
13 #include <set>
14 #include <map>
15 #include <string>
16 #include <cmath>
17 #include <cstdlib>
18 #include <ctime>
19 using namespace std;
20 typedef long long ll;
21 ll gcd(ll a,ll b) {
22     return b==0?a:gcd(b,a%b);
23 }
24
25
26 int main()
27 {
28     //freopen("a.txt","r",stdin);
29     //freopen("b.txt","w",stdout);
30     ll x,y;
31     while(~scanf("%lld%lld",&x,&y)) {
32         printf("%lld %lld\n",gcd(x,y),x/gcd(x,y)*y);
33     }
34     return 0;
35 }
时间: 2024-11-09 04:06:25

AOJ - 0009 Prime Number (素数筛法) && AOJ - 0005 (求最大公约数和最小公倍数)的相关文章

AOJ 0009 Prime Number(求素数)

题意:给定一个数n,判断从2—n中的素数个数是多少. KEY:这里有两种做法,一是没注释那个代码测试极端数据999999就会错的,二是注释掉的那段代码才能AC.对于一眼看上去很简单的题目,特别要注意时间复杂度. #include <iostream> #include <stdio.h> #include <string.h> const int maxn = 999999 + 5; int num[maxn]; using namespace std; int mai

AOJ 0009 Prime Number

题意:给出n,求不大于n的素数有多少个. 算法:先用线性时间复杂度的筛法打素数表,对于每个输入统计不超过的素数个数. #include <cstdio> int p[100010]; bool np[1000010]; int cntp; void SievePrime(int n) { for (int i = 0; i <= n; ++i) np[i] = true; np[0] = false, np[1] = false; for (int i = 2; i <= n; +

JD 题目1040:Prime Number (筛法求素数)

OJ题目:click here~~ 题目分析:输出第k个素数 贴这么简单的题目,目的不清纯 用筛法求素数的基本思想是:把从1開始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下的数中选择最小的数是素数,然后去掉它的倍数. 依次类推.直到筛子为空时结束. 如有: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1不是素数.去掉.剩下的数中2最小,是素数,去掉2的

Codeforces 385C Bear and Prime Numbers [素数筛法]

Code: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<string> #include<queue> #include<deque> #include<stack> #include<map&g

素数筛法--SPOJ Problem 2 Prime Generator

质数(prime number)又称素数,除了1和它本身外,不能整除以其他自然数,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.最小的质数是2. 要判断一个整数N是不是质数很简单,看它是否能被2到sqrt(N)之间的整数整除即可. def isPrime(n): if n%2==0: return False for i in xrange(3,int(math.sqrt(n)+1),2): if n%i==0: return False return True 不过要找出1

九度OJ 1040 Prime Number (筛素数,试除法)

题目描述: Output the k-th prime number. 输入: k≤10000 输出: The k-th prime number. 样例输入: 3 7 样例输出: 5 17 这道题,好久以前使用试除法做的,原理是维护一个素数表,根据输入的num,确定是否之前算过,算过了,就直接输出,没算过,就现在开始算,并且把中间的素数全保存下来: #include<stdio.h> int k[10001]; int main(int argc, char *argv[]) { k[1]=

762. Prime Number of Set Bits in Binary Representation 二进制表示形式中的素数位数

Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime number of set bits in their binary representation. (Recall that the number of set bits an integer has is the number of 1s present when written in bin

【Aizu - ALDS1_1_C】Prime Numbers(素数筛法)

Prime Numbers  Descriptions: A prime number is a natural number which has exactly two distinct natural number divisors: 1 and itself. For example, the first four prime numbers are: 2, 3, 5 and 7. Write a program which reads a list of N integers and p

poj 3518 Prime Gap 二分查找下界和素数筛法

/* 题意:输入有多组数据,每组数据一个n,如果n是素数,输出0否则输出离n最近的两个素数的积,第100000个素数是1299709,所有的素数都在这个范围内 思路:素数筛法加二分查找下界 */ #include<stdio.h> int a[1299720],pri[100005]; int Serch(int v)//二分查找下界 { int mid,x=0,y=100001; while(x<y) { mid=(y+x)/2; if(pri[mid]>=v) y=mid; e