Advertisement
Patrickmeme

Triprime - 47p

Mar 23rd, 2023
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. ifstream cin("triprime.in");
  5. ofstream cout("triprime.out");
  6.  
  7. #define MAX_B 65000000
  8. bool v[MAX_B+1];
  9. #define MAX_P 3940554
  10. long long prim[MAX_P];
  11.  
  12. int calcnrp(int b){
  13.     int j,i,prime;
  14.     for(j=4;j<=b/6;j+=2){
  15.         v[j]=1;
  16.     }
  17.     for(i=3;i*i<=b/6;i+=2){
  18.         if(v[i]==0){
  19.             for(j=i*i;j<=b/6;j+=i){
  20.                 v[j]=1;
  21.             }
  22.         }
  23.     }
  24.     prim[0]=2;
  25.     prime=1;
  26.     for(i=3;i<=b/6;i+=2){
  27.         if(v[i]==0){
  28.             prim[prime]=i;
  29.             prime++;
  30.         }
  31.     }
  32.     return prime;
  33. }
  34.  
  35. long long tr_pn_k(int x,int prime){
  36.     int i,j,k;
  37.     long long cnt;
  38.     cnt=0;
  39.     for(i=0;i<prime-2;i++){
  40.         j=i+1;
  41.         k=i+2;
  42.         while(prim[i]*prim[j]*prim[k]<=x && k<prime)
  43.             k++;
  44.         k--;
  45.         cnt+=(k-j);
  46.         j++;
  47.         while(j<k){
  48.             while(prim[i]*prim[j]*prim[k]>x)
  49.                 k--;
  50.             if(j<k)
  51.                 cnt+=(k-j);
  52.             j++;
  53.         }
  54.     }
  55.     return cnt;
  56. }
  57.  
  58. int main()
  59. {
  60.     long long a,b,prime;
  61.     cin>>a>>b;
  62.     prime=calcnrp(b);
  63.     cout<<tr_pn_k(b,prime)-tr_pn_k(a-1,prime);
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement