超级幂分析
題意:如果一個(gè)數(shù)至少是兩個(gè)不同的正整數(shù)的冪,那么它被稱(chēng)為超級(jí)冪,按升序輸出1至2^64-1之間的所有超級(jí)冪。
?
#include <iostream> #include <string.h> #include <stdio.h> #include <math.h> #include <set>using namespace std; typedef unsigned long long LL;bool prime[70];set<LL> s; set<LL>::iterator it;int top(int a) {return ceil(64/(log(a)/log(2.0))) - 1; }void isprime() {int i,j;memset(prime,true,sizeof(prime));for(i=2;i<70;i++){if(prime[i]){for(j=i+i;j<70;j+=i)prime[j] = false;}} }int main() {isprime();s.clear();cout<<"1"<<endl;for(LL i = 2;i<(1<<16);i++){int tp = top(i);LL num = i;for(int j=2;j<=tp;j++){num *= i;if(prime[j]) continue;if(s.count(num) == 0) s.insert(num);}}for(it = s.begin();it != s.end();it++)cout<<*it<<endl;return 0; }
?
總結(jié)
- 上一篇: 0x5f3759df的数学原理
- 下一篇: HDU3892(多项式域欧几里德算法)