Uva 10235 - Simply Emirp
/*
Uva 10235 - Simply Emirp
Verdict: Accepted
Time:: 0.449 !!!!!!!!
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <list>
#include <vector>
#define N 1000000
using namespace std;
long stats[(N/2)+1];
long pri[(N/2)+1],pril=1;
void prime ()
{
long i,j,qrt;
qrt = long (sqrt(double (N)));
for (i=2;i<=N>>1;i++)
{
stats[i] = 0;
}
pri[0] = 2;
for (i=3;i<=qrt;i+=2)
{
if (stats[i>>1] == 0)
{
for (j=i*i;j<=N;j+=i+i)
{
stats[j>>1] = 1;
}
}
}
for (i=3;i<=N;i+=2)
{
if (stats[i>>1] == 0)
{
//printf("%ld ",i);
//vprime.push_back(i);
pri[pril] = i;
pril++;
}
}
}
int main()
{
prime();
/*for (long i=0;i<pril;i++)
{
//cout << vprime[i];
printf("%ld ",pri[i]);
}*/
long n,a,b,narr[(N/2)+1],nlen,i,j,r;
while (scanf ("%ld",&n)==1)
{
r=0,nlen=0;
bool f = false;
for (i=0;i<pril;i++)
{
if (n == pri[i])
{
f = true;
break;
}
}
if (!f)
{
printf("%ld is not prime.\n",n);
}
else {
bool jst = false;
a = n;
b = n;
while (a!=0)
{
a%=10;
narr[nlen] = a;
nlen++;
b/=10;
a = b;
}
/*for (i=0;i<nlen;i++)
{
printf("%ld ",narr[i]);
}*/
for (i=0;i<nlen;i++)
{
r = (r*10) + narr[i];
}
//printf("%ld\n",r);
for (i=0;i<pril;i++)
{
if (r == pri[i])
{
jst = true;
break;
}
}
if (jst)
{
if (r == n)
{
printf("%ld is prime.\n",n);
}
else
{
printf("%ld is emirp.\n",n);
}
}
else
{
printf("%ld is prime.\n",n);
}
}
}
return 0;
}
Uva 10235 - Simply Emirp
Verdict: Accepted
Time:: 0.449 !!!!!!!!
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <list>
#include <vector>
#define N 1000000
using namespace std;
long stats[(N/2)+1];
long pri[(N/2)+1],pril=1;
void prime ()
{
long i,j,qrt;
qrt = long (sqrt(double (N)));
for (i=2;i<=N>>1;i++)
{
stats[i] = 0;
}
pri[0] = 2;
for (i=3;i<=qrt;i+=2)
{
if (stats[i>>1] == 0)
{
for (j=i*i;j<=N;j+=i+i)
{
stats[j>>1] = 1;
}
}
}
for (i=3;i<=N;i+=2)
{
if (stats[i>>1] == 0)
{
//printf("%ld ",i);
//vprime.push_back(i);
pri[pril] = i;
pril++;
}
}
}
int main()
{
prime();
/*for (long i=0;i<pril;i++)
{
//cout << vprime[i];
printf("%ld ",pri[i]);
}*/
long n,a,b,narr[(N/2)+1],nlen,i,j,r;
while (scanf ("%ld",&n)==1)
{
r=0,nlen=0;
bool f = false;
for (i=0;i<pril;i++)
{
if (n == pri[i])
{
f = true;
break;
}
}
if (!f)
{
printf("%ld is not prime.\n",n);
}
else {
bool jst = false;
a = n;
b = n;
while (a!=0)
{
a%=10;
narr[nlen] = a;
nlen++;
b/=10;
a = b;
}
/*for (i=0;i<nlen;i++)
{
printf("%ld ",narr[i]);
}*/
for (i=0;i<nlen;i++)
{
r = (r*10) + narr[i];
}
//printf("%ld\n",r);
for (i=0;i<pril;i++)
{
if (r == pri[i])
{
jst = true;
break;
}
}
if (jst)
{
if (r == n)
{
printf("%ld is prime.\n",n);
}
else
{
printf("%ld is emirp.\n",n);
}
}
else
{
printf("%ld is prime.\n",n);
}
}
}
return 0;
}
Comments
Post a Comment