[结题报告]10235 Simply Emirp Time limit: 3.000 seconds

Problem G: Simply Emirp

An integer greater than 1 is called a prime number if its only positive divisors (factors) are 1 and itself. Prime numbers have been studied over the years by a lot of mathematicians. Applications of prime numbers arise in Cryptography and Coding Theory among others.

Have you tried reversing a prime ? For most primes, you get a composite (43 becomes 34). An Emirp (Prime spelt backwards) is a Prime that gives you a different Prime when its digits are reversed. For example, 17 is Emirp because 17 as well as 71 are Prime. In this problem, you have to decide whether a number N is Non-prime or Prime or Emirp. Assume that 1N1000000.

Interestingly, Emirps are not new to NTU students. We have been boarding 199 and 179 buses for quite a long time!

Input

Input consists of several lines specifying values for N.

Output

For each N given in the input, output should contain one of the following:

    1. "N is not prime.", if N is not a Prime number.
    2. "N is prime.", if N is Prime and N is not Emirp.
    3. "N is emirp.", if N is Emirp.

Sample Input

17
18
19
179
199

Sample Output

17 is emirp.
18 is not prime.
19 is prime.
179 is emirp.
199 is emirp.

参考代码:
此题主要是讲判断一个数是否为质数,和其倒过来的数是否为质数,思路并不难想,只要掌握数倒置,如何让判断质数即可.先求出倒置的数,然后分别判断是否为质数,最后判断输出.
#include"stdio.h"
#include"math.h"
#include"stdlib.h"
long fun1(long n)   //判断是否为质数 
{ long t,m;
  m=(long)sqrt(n);
  for(t=2;t<=m;t++)
   if(n%t==0)
   return 0;
  return 1;  
    }
long fun2(long s)      //将数倒置 
{ char a[2000];
  int i=0;
  while(s>0)
  { a[i]=s%10+48;    
    s/=10;
    i++;}
  a[i]='\0';
  s=atol(a);
  return s;     
     }
int main(void)
{ long n,m,flag1,flag2,flag3;
  while(scanf("%ld",&n)!=EOF)
  {flag1=0;flag2=0;flag3=0;
   m=fun2(n);
   flag1=fun1(n);
   flag2=fun1(m);
   if(m!=n)
   flag3=1;
   if(flag1==1&&flag2==1&&flag3==1) printf("%ld is emirp.\n",n);
   else 
   if(flag1==1) printf("%ld is prime.\n",n);
   else
   if(flag1==0) printf("%ld is not prime.\n",n);
                             }return 0;
      }
原文地址:https://www.cnblogs.com/sjy123/p/2923080.html