Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Scanner;
- public class Main {
- static boolean isMersennePrime(int mersennePrime, int exponent) {
- boolean isPrime = false;
- long s = 4;
- for (int i = 2; i < exponent; i++) {
- s = ((s * s) - 2) % mersennePrime;
- }
- if ((s == 0) || (mersennePrime == 3)) {
- isPrime = true;
- }
- return isPrime;
- }
- static long getN() {
- Scanner scanner = new Scanner(System.in);
- boolean isIncorrect;
- long ret = 0;
- String inputLine;
- do {
- isIncorrect = false;
- System.out.println("Введите N");
- inputLine = scanner.nextLine();
- try {
- ret = Long.parseLong(inputLine);
- } catch (Exception ex) {
- System.err.println("N должно быть положительным числом меньшим 4294967295");
- isIncorrect = true;
- }
- if (((ret < 1) || (ret > 4294967295L)) && !isIncorrect) {
- System.err.println("N должно быть положительным числом меньшим 4294967295");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return ret;
- }
- static void printArray(ArrayList<Integer> arrayToPrint) {
- System.out.println("Числа мерсена равны");
- for (int i = 0; i < arrayToPrint.size(); i++) {
- System.out.println(arrayToPrint.get(i));
- }
- }
- static ArrayList<Integer> getPrimes() {
- byte p = 32;
- ArrayList<Integer> primes = new ArrayList<Integer>();
- for (int i = 0; i < p; i++)
- primes.add(i + 1);
- for (int i = 1; i < primes.size(); i++)
- if (primes.get(i) != 0)
- for (int j = i + 1; j < primes.size(); j++)
- if (primes.get(j) % primes.get(i) == 0)
- primes.remove(j);
- return primes;
- }
- static void GetMersennePrimes() {
- long n;
- int mersennePrime;
- n = getN();
- ArrayList<Integer> primes = getPrimes();
- ArrayList<Integer> mersennePrimes = new ArrayList<Integer>();
- for (int i = 0; i < primes.size(); i++) {
- mersennePrime = (1 << primes.get(i)) - 1;
- if (isMersennePrime(mersennePrime, primes.get(i)) && n > mersennePrime) {
- mersennePrimes.add(mersennePrime);
- }
- }
- printArray(mersennePrimes);
- }
- public static void main(String[] args) {
- GetMersennePrimes();
- }
- }
Add Comment
Please, Sign In to add comment