码迷,mamicode.com
首页 > 其他好文 > 详细

【蓝桥杯】PrimeDistance

时间:2014-05-23 00:56:16      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:java   算法   蓝桥杯   

如果p1p2p1< p2)均为素数,且任意整数pp1< p< p2)都不是素数,则说素数p1p2是相邻的,并定义它们之间的距离为d= p2 - p1。给定正整数LU,求出区间[L, U]中距离最小的两个相邻素数C1C2和距离最大的两个相邻素数D1D2

例如,L=2,U=17时,C1=2,C2=3,D1=7,D2=11。


import java.util.ArrayList;
import java.util.Scanner;

public class PrimeDistance {

	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		int max = Integer.MIN_VALUE;
		int min = Integer.MAX_VALUE;
		int c1 = 0;
		int c2 = 0;
		int d1 = 0;
		int d2 = 0;
		Scanner scan = new Scanner(System.in);
		String str = scan.nextLine();
		int L = Integer.parseInt(str.split(" ")[0]);
		int R = Integer.parseInt(str.split(" ")[1]);
		for (int i = L; i <= R; i++) {
			if (isPrime(i)) {
				list.add(i);
			}
		}
		for (int i = 1; i < list.size(); i++) {
			if ((list.get(i) - list.get(i - 1)) > max) {
				max = list.get(i) - list.get(i - 1);
				d1 = list.get(i - 1);
				d2 = list.get(i);
			}
			if ((list.get(i) - list.get(i - 1)) < min) {
				min = list.get(i) - list.get(i - 1);
				c1 = list.get(i - 1);
				c2 = list.get(i);
			}
		}
		System.out
				.println("c1=" + c1 + ",c2=" + c2 + ",d1=" + d1 + ",d2=" + d2);
	}

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

}


【蓝桥杯】PrimeDistance,布布扣,bubuko.com

【蓝桥杯】PrimeDistance

标签:java   算法   蓝桥杯   

原文地址:http://blog.csdn.net/tracysilocean/article/details/26501041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!