Check number divisibility with regular expressions

前端 未结 6 2174
我寻月下人不归
我寻月下人不归 2020-12-05 18:39

Given a decimal number N as a string of digits, how do I check if it\'s divisible by M using regular expressions only, without con

6条回答
  •  醉酒成梦
    2020-12-05 19:30

    If your numbers are unary based, you can use this regex: s/1{divisor}//g then test if the number is empty.

    Here is a Perl way to do it

    my @divs = (2,3,5,7,11,13);
    for my $num(2..26) {
        my $unary = '1'x$num; # convert num to unary
        print "\n$num can be divided by : ";
        for(@divs) {
            my $test = $unary;
            $test =~ s/1{$_}//g;
            print "$_, " unless $test;
        }
    }
    

    output:

    2 can be divided by : 2, 
    3 can be divided by : 3, 
    4 can be divided by : 2, 
    5 can be divided by : 5, 
    6 can be divided by : 2, 3, 
    7 can be divided by : 7, 
    8 can be divided by : 2, 
    9 can be divided by : 3, 
    10 can be divided by : 2, 5, 
    11 can be divided by : 11, 
    12 can be divided by : 2, 3, 
    13 can be divided by : 13, 
    14 can be divided by : 2, 7, 
    15 can be divided by : 3, 5, 
    16 can be divided by : 2, 
    17 can be divided by : 
    18 can be divided by : 2, 3, 
    19 can be divided by : 
    20 can be divided by : 2, 5, 
    21 can be divided by : 3, 7, 
    22 can be divided by : 2, 11, 
    23 can be divided by : 
    24 can be divided by : 2, 3, 
    25 can be divided by : 5, 
    26 can be divided by : 2, 13, 
    

提交回复
热议问题