Posts Tagged ‘wyrażenie regularne’

Wyrażenie regularne sprawdzające, czy liczba jest pierwsza

Wyrażenie regularne, które potrafi sprawdzić, czy dana liczba jest pierwsza.

^1?$|^(11+?)\1+$

import static java.lang.System.*;

public class Prime {

	public static final String PRIME_REGEX = "^1?$|^(11+?)\\1+$";

	public static boolean isPrime(int i) {
		String s = "";
		while (i > 0) {
			i--;
			s += "1";
		}
		return !Pattern.matches(PRIME_REGEX, s); // escape the \1
	}

	public static void main(String[] args) {

		final int i = Integer.parseInt(args[0]);
		final boolean isPrime = isPrime(i);
		out.println(i + " is" + (isPrime ? "" : " not") + " a prime number");
	}
}
<barista@javaczyherbata.pl> java Prime 9
9 is not a prime number

Jak to działa?
Read the rest of this entry »