Introduction to Java Programming编程题5.27<反素数>

/*
13  17  31  37  71  73  79  97  107 113
149 157 167 179 199 311 337 347 359 389
701 709 733 739 743 751 761 769 907 937
941 953 967 971 983 991 1009    1021    1031    1033
1061    1069    1091    1097    1103    1109    1151    1153    1181    1193
1201    1213    1217    1223    1229    1231    1237    1249    1259    1279
1283    1301    1321    1381    1399    1409    1429    1439    1453    1471
1487    1499    1511    1523    1559    1583    1597    1601    1619    1657
1669    1723    1733    1741    1753    1789    1811    1831    1847    1867
1879    1901    1913    1933    1949    1979    3011    3019    3023    3049
*/
public class NonReversePrime {
  public static void main(String[] args) {
    int count = 0;
    for (int i = 13; count < 100; i++) {
      if (isPrime(i)) {
        if (isReversePrime(i)) {
          count++;
          System.out.print(i + "\t");
          if (count % 10 == 0)
            System.out.println();
        }
      }
    }
  }

  public static boolean isPrime(int n) {
    for (int i = 2; i <= n / 2; i++) {
      if (n % i == 0)
        return false;
    }
    return true;
  }

  public static boolean isReversePrime(int n) {
    if (isPrime(reverseNumber(n)) && (!isReverseNumber(n)))
      return true;
    else
      return false;
  }

  public static boolean isReverseNumber(int n) {
    if (reverseNumber(n) == n)
      return true;
    else
      return false;
  }
  public static int reverseNumber(int n) {
    int i, temp = n, count = 0;
    long reverseNumber = 0;
    final int DECIMAL = 10;

    while ((temp /= DECIMAL) != 0)
      count++;

    do {
      reverseNumber += (n % DECIMAL) * Math.pow(DECIMAL, count);
      count--;
    } while ((n /= DECIMAL) != 0);

    return (int)reverseNumber;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值