Find the number of integers 1
Solution
This problem can be solved using sieve technique.
#include <cstdio> #include <iostream> #include <ctime> using namespace std; #define sz 10000001 #define hi 3163 long table[sz+1],cnt; void sieve(){ int i,j,k; for( i = 2; i <= hi; i++){ if( table[i] == table[i-1]) cnt++; j = i * i; table[j]++; for( j = j + i; j <= sz; j += i) table[j] += 2; } for( i = hi+1; i <= sz; i++){ if( table[i] == table[i-1]) cnt++; } } int main(){ long i,j,k,l; double st,en; st = clock(); sieve(); printf("%ld\n",cnt-1); en = clock(); printf("%lf\n",(en-st)/CLOCKS_PER_SEC); return 0; }
No comments:
Post a Comment