bartekltg

prime pyramid finder

Oct 20th, 2026
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <cstdint>
  2. #include <iostream>
  3. #include <vector>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. const int max_level = 45000;
  10. const int max_prime = (max_level*(max_level));
  11.  
  12.  
  13. void sieve(){
  14.     vector <int8_t> tab(max_prime+1, 1);
  15.     for (int i=4; i<=max_prime; i+=2 )
  16.         tab[i]=0;
  17.     for (int i=3; i*i<=max_prime; i+=2 ){
  18.         if (tab[i]==0) continue;
  19.         for (int j=i*i; j<=max_prime; j+=i ){
  20.             tab[j]=0;
  21.         }
  22.     }
  23.  
  24.     int left_score=0;
  25.     int right_score=0;
  26.  
  27.     int found_l=0;
  28.  
  29.     ofstream output("output.txt");
  30.  
  31.  
  32.     for (int level=2; level<=max_level; level++){
  33.         for (int k = ((level-1)*(level-1))+1 ; k<= ((level)*(level))-level ; k++ ){
  34.             if (tab[k]) {
  35.                 left_score++;
  36.                // cout<<"left "<<k<<"; ";
  37.             }
  38.         }
  39.         for (int k = (level*(level))-level+2;k<= (level*(level)) ; k++ ){
  40.             if (tab[k]) {
  41.                 right_score++;
  42.                // cout<<"right "<<k<<"; ";
  43.             }
  44.         }
  45.         output <<level<<" "<<left_score<<" "<<right_score<<endl;
  46.         if (right_score>left_score)
  47.             cout<<"level "<<level<<": "<<left_score<<" "<<right_score<<" "<<((right_score>left_score)?"+":"")<<endl;
  48.         if (right_score>left_score && found_l==0)  found_l = level;
  49.     }
  50.     cout<<found_l<<endl;
  51.  
  52. }
  53.  
  54.  
  55. int main()
  56. {
  57.     sieve();
  58.     return 0;
  59. }
  60.  
Advertisement
Add Comment
Please, Sign In to add comment