Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define M 1000000000
- typedef long long lint;
- using namespace std;
- vector<lint>prime;
- bool marked[M];
- bool isPrime(lint n){
- if(n < 2) return false;
- if(n == 2) return true;
- if(n % 2 == 0) return false;
- return marked[n] == false;
- }
- void sieve(){
- for(lint i = 3; i * i <= M; i += 2){
- if(marked[i] == false){
- for(lint j = i * i; j <= M; j += i + i){
- marked[j] = true;
- }
- }
- }
- }
- vector<lint>getPrime(){
- vector<lint>p;
- for(lint i = 1; i <= M; i++){
- if(isPrime(i)){
- p.push_back(i);
- }
- }
- return p;
- }
- bool primeki(lint n){
- for(lint i = 0; prime[i] * prime[i] <= n; i++){
- if(n % prime[i] == 0) return false;
- }
- return true;
- }
- int main()
- {
- sieve();
- prime = getPrime();
- lint n;
- while(cin>>n){
- if(n == 0) break;
- lint cnt = 0;
- for(lint i = 1; i <= n; i++){
- if(primeki(i)){
- printf("%lld is prime.\n",i);
- cnt ++;
- }
- }
- printf("Total Prime Counts : %lld\n",cnt);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement