вторник, 26 ноября 2024 г.

Определение простого числа с помощью регулярного выражения

Финт здесь в том, что число представляется в виде одинаковых символов длиной, равной самому числу. Далее проверяется, если ли какое число, которое точненько укладывается в строку
Аналог задачки начального класса - разделить например яблоки на несколько ребят. Всем ли достанется одинаково. И если яблоки можно разделить только по одной штуке, то число простое.


Код.

JAVA

public static boolean isPrime(int n) {
     return !new String(new char[n]).matches(".?|(..+?)\\1+");
}

Python

def is_prime(n):
   return not re.match(r'^.?$|^(..+?)\1+$', '1'*n)

JavaScript ECMA6

function isPrime(n) {
    var re = /^.?$|^(..+?)\1+$/;
    return !re.test('1'.repeat(n));
}

JavaScript

function isPrime(n) {
   var re = /^.?$|^(..+?)\1+$/;
   return !re.test(Array(n+1).join('1'));
}

Perl

sub is_prime {
   return !((1x$_[0]) =~ /^.?$|^(..+?)\1+$/);
}

C#

public static bool IsPrime(int n) {
   return !Regex.IsMatch(new string('1', n), "^.?$|^(..+?)\\1+$");
}

Источник

https://illya.sh/the-codeumentary-blog/regular-expression-check-if-number-is-prime/

Комментариев нет:

Отправить комментарий