UVa 10110 - Light, more light

#include <iostream>
#include <vector>
#include <bitset>
using namespace std;
bitset<65537> p;
vector<int> prime;
void calc(){
    long long tmp=65536;
    long long tmp2=256;
    for(long long i=2;i<=tmp;i++){
        if(!p[i]){
            prime.push_back(i);
            if(i<=tmp2)
                for(long long j=i*i;j<=tmp;j+=i)
                    p[j]=1;
            }
        }
    }
int main(){
    calc();
    ios::sync_with_stdio(0);
    unsigned int n;
    while(cin>>n&&n){
        long long ans=1;
        for(int i=0;i<prime.size()&&prime[i]<=n;i++){
            if(n%prime[i]==0){
                int t=0;
                while(n%prime[i]==0)
                    t++,n/=prime[i];
                ans*=t+1;
            }
        }
        if(n>1)
            ans*=2;
        if(ans%2)
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
    }
}

Comments