Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdint>
- #include <iostream>
- #include <vector>
- #include <fstream>
- using namespace std;
- const int max_level = 45000;
- const int max_prime = (max_level*(max_level));
- void sieve(){
- vector <int8_t> tab(max_prime+1, 1);
- for (int i=4; i<=max_prime; i+=2 )
- tab[i]=0;
- for (int i=3; i*i<=max_prime; i+=2 ){
- if (tab[i]==0) continue;
- for (int j=i*i; j<=max_prime; j+=i ){
- tab[j]=0;
- }
- }
- int left_score=0;
- int right_score=0;
- int found_l=0;
- ofstream output("output.txt");
- for (int level=2; level<=max_level; level++){
- for (int k = ((level-1)*(level-1))+1 ; k<= ((level)*(level))-level ; k++ ){
- if (tab[k]) {
- left_score++;
- // cout<<"left "<<k<<"; ";
- }
- }
- for (int k = (level*(level))-level+2;k<= (level*(level)) ; k++ ){
- if (tab[k]) {
- right_score++;
- // cout<<"right "<<k<<"; ";
- }
- }
- output <<level<<" "<<left_score<<" "<<right_score<<endl;
- if (right_score>left_score)
- cout<<"level "<<level<<": "<<left_score<<" "<<right_score<<" "<<((right_score>left_score)?"+":"")<<endl;
- if (right_score>left_score && found_l==0) found_l = level;
- }
- cout<<found_l<<endl;
- }
- int main()
- {
- sieve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment