zoukankan      html  css  js  c++  java
  • [结题报告]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;
          }
  • 相关阅读:
    python实现RSA加密解密方法
    信息安全-2:python之hill密码算法[原创]
    信息安全-4:公钥密码体制之背包算法[原创]
    python之import子目录文件
    python之路径导入
    python之局部变量引用赋值前的结果
    python之socket-ssh实例
    python之面向对象与构造函数
    git搜索--grep
    git日志--log
  • 原文地址:https://www.cnblogs.com/sjy123/p/2923080.html
Copyright © 2011-2022 走看看