算法竞赛003之孪生素数

孪生素数

如果n和n+2都是素数,则称他们都是孪生素数.输入m,输出两个数均不超过m的最大孪生素数.

5<=m<=10000.例如

例如m=20时,答案是17,19,m=1000时,答案是881,883.

 

package practice;

import java.util.Scanner;

/**
 * @author jins
 * @date on 2019/1/15.
 */
public class TwinPrime {

    public static void main(String[] args)
    {
        int i,n;
        Scanner scanner = new Scanner(System.in);
         n  = scanner.nextInt();
         // 找最大的孪生素数,从大往小找比较合适
         for ( i=n;i>=3;i--) {
             if (isPrime(i) == 1 && isPrime(i - 2) == 1) {
                 System.out.println(" " + (i - 2) + " " + i);
                 break;
             }
         }
    }

    private static int isPrime(int n)
    {
        //判断该数是否是素数
        for ( int i= 2 ; i<=Math.sqrt(n); i++) {
            if (n%i==0) {
                return 0;
            }
        }
        return 1;
    }
}
package practice;

import java.util.Scanner;

/**
 * @author jins
 * @date on 2019/1/15.
 */
public class TwinPrime {

    public static void main(String[] args)
    {
        int i,n;
        Scanner scanner = new Scanner(System.in);
         n  = scanner.nextInt();
         // 找最大的孪生素数,从大往小找比较合适
         for ( i=n;i>=3;i--) {
             if (isPrime(i) == 1 && isPrime(i - 2) == 1) {
                 System.out.println(" " + (i - 2) + " " + i);
                 break;
             }
         }
    }

    private static int isPrime(int n)
    {
        //判断该数是否是素数
        for ( int i= 2 ; i<=Math.sqrt(n); i++) {
            if (n%i==0) {
                return 0;
            }
        }
        return 1;
    }
}

如果大家喜欢我的文章,可以关注我的微信公众号,后面会陆续更新!

 

算法竞赛003之孪生素数