Posted: Fri Jul 13, 2007 12:50 pm
2, 3, 5, 7, 11 ... these are primes, not emirps. Read the description again to find the reason.
Code: Select all
/***** simply emirp @ 10235 *****/
#include<stdio.h>
#include<math.h>
long isPrime(long p)
{
long s;
s=long(sqrt(p));
//if(p==1) return 1;
//if(p==2) return 1;
if(p%2==0) return 0;
for(long i=3;i<=s+1;i+=2)
if(p%i==0)
return 0;
return 1;
}
long RevisPrime(long q)
{
long r;
long val=0;
for(;q;q/=10)
val = val*10 + q%10;
r=long(sqrt(val));
//if(val==1) return 1;
//if(val==2) return 1;
if(val%2==0) return 0;
for(long k=3;k<=r+1;k+=2)
if(val%k==0)
return 0;
return 1;
}
int main()
{
long num;
long t1,t2;
while(scanf("%ld",&num)==1)
{
t1=isPrime(num);
t2=RevisPrime(num);
if(num==2||num==3||num==5||num==7||num==11)
printf("%ld is prime.\n",num);
else if(t1==0)
printf("%ld is not prime.\n",num);
else if(t1==1 && t2==1)
printf("%ld is emirp.\n",num);
else if(t1==1 && t2==0)
printf("%ld is prime.\n",num);
}
return 0;
}
Code: Select all
Removed After AC
amr saqr wrote:Code: Select all
int index=0,temp=number; while (temp!=0) { n[index]=temp%10+'0'; temp/=10; index++; } int t=atoi(n);
Code: Select all
AC..
removed after AC..
Code: Select all
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 1000000
bool pr[max+1];
int prime[max];
int main()
{
long int ns,re;
int len,r,fg;
char in[10],rev[10];
//generating primes
pr[0]=true;
pr[1]=true;
for(int i=2;i*i<=max;i++)
{
if(pr[i]==true)
continue;
for(int j=i+i;j<=max;j=j+i)
pr[j]=true;
//generating ends;
}
//program starts
while(gets(in))
{
ns=atol(in);
if(pr[ns]==true)
{
printf("%ld is not prime.\n",ns);
continue;
}
else
{
len=strlen(in);
r=0;
fg=1;
for(int k=len-1;k>=0;k--)
{
if(in[k]!='0')
rev[r++]=in[k];
}
rev[r]='\0';
re=atol(rev);
//printf("%ld",re);
if(pr[re]==false && re!=ns)
fg++;
}
if(fg==1)
printf("%ld is prime.\n",ns);
else if(fg==2)
printf("%ld is emirp.\n",ns);
}
return 0;
}
Code: Select all
#include<stdio.h>
#include<math.h>
int main()
{
long int n,n1,rs;
int i,j,r;
bool chk,chk2;
while(scanf("%ld",&n)!=EOF)
{
chk=true;
if(n==0 || n==1)
chk=false;
for(i=2;i<sqrt(n);i++)
if(n%i==0)
chk=false;
if(chk==false)
printf("%ld is not prime.\n",n);
else
{
chk2=true;
rs=0;
n1=n;
while(n!=0)
{
r=n%10;
rs=rs*10+r;
n=n/10;
}
for(j=2;j<sqrt(rs);j++)
if(rs%j==0)
chk2=false;
if(rs==n1)
printf("%ld is prime.\n",n1);
else if(chk2==true)
printf("%ld is emirp.\n",n1);
else if(chk==true)
printf("%ld is prime.\n",n1);
}
}
return 0;
}
Code: Select all
#include<stdio.h>
static char sieve[1000001];
unsigned long reverse(unsigned long x)
{
unsigned long r=0;
do
{
r=r*10+(x%10);
x/=10;
}while(x);
return r;
}
int main()
{
unsigned long int i,j,n;
sieve[0]=sieve[1]=0;
for(i=2; i<100001; i++) sieve[i]=1;
for(i=2; i<1001; i++)
{
if(sieve[i]!=0)
{
for(j=i+1; j<1000001; j++)
{
if (sieve[j]!=0)
{
if((j%i)==0) sieve[j]=0;
}
}
}
}
while(scanf("%lu",&n)!=EOF)
{
if(sieve[n]==0) printf("%lu is not prime.\n",n);
else if(sieve[n]==1)
{
if((sieve[reverse(n)]==1) && (n!=reverse(n))) printf("%lu is emirp.\n",n);
else printf("%lu is prime.\n",n);
}
}
return 0;
}
Code: Select all
/* Removed */