Divisibility test

38

4

Task

Given two strictly positive integers n and d as input, determine whether n is evenly divisible by d, i.e., if there exists an integer q such that n = qd.

You may write a program or a function and use any of the our standard methods of receiving input and providing output.

The output should be a truthy or a falsy value; truthy if n is divisible by d, and falsy otherwise.

Your code only has to handle integers it can represent natively, as long as it works for all signed 8-bit integers. However, your algorithm has to work for arbitrarily large integers.

You may use any programming language, but note that these loopholes are forbidden by default.

This is , so the shortest valid answer – measured in bytes – wins.

Test cases

 n,  d    output

 1,  1    truthy
 2,  1    truthy
 6,  3    truthy
17, 17    truthy
22,  2    truthy
 1,  2    falsy
 2,  3    falsy
 2,  4    falsy
 3,  9    falsy
15, 16    falsy

Leaderboard

The Stack Snippet at the bottom of this post generates the catalog from the answers a) as a list of shortest solution per language and b) as an overall leaderboard.

To make sure that your answer shows up, please start your answer with a headline, using the following Markdown template:

## Language Name, N bytes

where N is the size of your submission. If you improve your score, you can keep old scores in the headline, by striking them through. For instance:

## Ruby, <s>104</s> <s>101</s> 96 bytes

If there you want to include multiple numbers in your header (e.g. because your score is the sum of two files or you want to list interpreter flag penalties separately), make sure that the actual score is the last number in the header:

## Perl, 43 + 3 (-p flag) = 45 bytes

You can also make the language name a link which will then show up in the snippet:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table><script>var QUESTION_ID = 86149; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 48934; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>

Leaky Nun

Posted 2016-07-21T16:11:20.220

Reputation: 45 011

This conversation has been moved to chat.

– Dennis – 2016-07-21T19:12:33.080

Answers

41

Jelly, 1 byte

This took me hours to golf.

Try it online!

James

Posted 2016-07-21T16:11:20.220

Reputation: 54 537

12wow that's very very complex! – None – 2016-07-22T12:46:49.747

@MatthewRoh Yep. Like I said, it took me hours to come up with. :P – James – 2016-07-23T20:08:02.713

29

Brain-Flak, 72 70 64 62 58 46 bytes

{({}[()]{(<()>)}{}<({}[()]<({}())>)>)}{}{{}}{}

Takes dividend and divisor (in that order) as input and prints the divisor (truthy) or nothing. Since each stack has an implicit, infinite amount of zeroes, empty output should be considered falsy.

While not stack-clean, this solution uses only a single stack.

Try it online!

Thanks to @WheatWizard for golfing off 2 bytes!

How it works

                INPUT: a (dividend), b (divisor)
                INITIAL STACK: n = a, d = b, r = 0
                               An infinite amount of zeroes follows.

{               While n is non-zero:
  (
    {}              Pop n from the stack.
    [()]            Yield -1.
    {               While the top of the stack (initially, d) is non-zero:
      (<()>)          Push 0.
    }
    {}              Pop 0. This will remove d from the stack if d = 0, leaving r
                    on top. We can think of this as performing the assignment
                    (d, r) = (r, d) if d = 0.
    <
      (
        {}              Pop d.
        [()]            Yield -1.
        <
          (
            {}              Pop r.
            ()              Yield 1.
          )               Push r + 1.
        >               Yield 0.
      )               Push d + (-1) + 0 = d - 1.
    >               Yield 0.
  )               Push n + (-1) + 0 + 0 + 0 = n - 1.
}               Each iteration decrements n, swaps d and r if d = 0, decrements d,
                and increments r.
                FINAL VALUES: n = 0
                              d = b - r
                              r = a % b if a % b > 0 else b
{}              Pop n.
{               While the top of the stack is non-zero:
  {}              Pop it.
}               This pops d and r if d > 0 (and, thus, a % b > 0) or noting at all.
{}              Pop d or a 0, leaving r if r = b and, thus, a % b = 0.

Modulus calculation, 42 bytes

The above full program can be modified in a trivial manner to calculate the modulus instead.

{({}[()]<({}[()]<({}())>)>{(<()>)}{})}{}{}

As before, this method is not stack-clean, but it uses only a single stack. A modulus of 0 will leave the stack empty, which is roughly equivalent to leaving 0; each stack contains infinite zeroes.

Try it online!

How it works

Compare the two loops of the divisibility tester and the modulus calculator.

{({}[()]{(<()>)}{}<({}[()]<({}())>)>)}
{({}[()]<({}[()]<({}())>)>{(<()>)}{})}

The only difference is the location of {(<()>)}{}, which swaps d and r if d = 0. To calculate the modulus, we perform this swap after decrementing d and incrementing r.

This change does not affect the outcome if a %b > 0, but if a % b = 0, it leaves (n, d, r) = (0, b, 0) – rather than (n, d, r) = (0, 0, b) – on the stack.

Thus, to obtain the modulus, we only have to pop n and d with {}{}.

Stack-clean modulus calculation, 64 bytes

The 42-byte modulus algorithm is not stack-clean, so it cannot be used as is in all programs. The following version pops dividend and divisor (in that order) from the active stack and pushes the modulus in return. It has no other side effects.

({}(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}>)

This solution is largely based on @WheatWizard's previous 72-byte record, but it saves 6 bytes by never switching stacks.

Try it online!

How it works

             INPUT: a (dividend), b (divisor)
             INITIAL STACK: n = a, b

(
  {}         Pop and yield n = a.
  (<()>)       Push d = 0.
)              Push n + 0 = n.
             STACK: n, d = 0, b
{(           While n in non-zero:
  {}           Pop and yield n.
  [()]         Yield -1.
  <
   ((
     {}         Pop and yield d.
     ()         Yield 1.
     [({})]     Pop b, push it back on the stack, and yield -b.
   ))         Push d + 1 + -b = d + 1 - b twice.
   {          While/if d + 1 - b is non-zero, i.e., if d < b - 1
     {}         Pop d + 1 - b (second copy).
     (<(
       {}         Pop d + 1 - b (first copy).
       ({})       Pop b and push it back on the stack.
     )>)        Push d + 1 - b + b = d + 1, then 0.
   }          If the loop wasn't skipped entirely, pushing 0 breaks out.
              If d < b - 1, it essentially performs the assignment d = d + 1.
              However, if d = b - 1, we get d = d + 1 - b = b - 1 + 1 - b = 0.
              In all cases, we wind up with d = (d + 1) % b.
   {}         Pop 0.
  >         Yield 0.
)}        Push n + -1 + 0 = n - 1. Break if n - 1 = 0.
          STACK: n = 0, d = a % b, b
(
  {}        Pop and yield n = 0.
  {}        Pop and d = a % b.
  <{}>      Pop b, but yield 0.
)         Push 0 + a % b + 0 = a % b.

Dennis

Posted 2016-07-21T16:11:20.220

Reputation: 196 637

20

x86_32 machine code, 8 bytes

08048550 <div7>:
 8048550:   99                      cdq   
 8048551:   f7 f9                   idiv   %ecx
 8048553:   85 d2                   test   %edx,%edx
 8048555:   0f 94 c0                sete   %al

This is my first code golf answer, so hopefully I'm following all the rules.

This first calls cdq to clear out the edx register, then performs signed division on the ecx register, which stores the remainder in edx. The test edx, edx line will set the zero flag if edx is zero, and sete puts a 0 for false if edx was not zero, and puts a 1 for true if edx was 0.

This is just the code snippet that contributes to the byte count, but for testing, here is the C code I wrote with the inline assembly because it's easier this way to handle I/O.

davey

Posted 2016-07-21T16:11:20.220

Reputation: 321

2Welcome to PPCG, nice first answer! – Leaky Nun – 2016-07-23T07:07:34.200

Does it need to be a full program? I was formatting my response kinda off this answer.

And thank you! I'm hoping to get better at assembly/machine code for more code golfing!

– davey – 2016-07-23T07:11:29.353

1

Input and output in specified registers in assembly is allowed by default: input, output. This is a perfectly acceptable submission. Welcome to PPCG!

– Mego – 2016-07-23T07:31:50.963

Fantastic! Thank you! – davey – 2016-07-23T07:53:02.710

17

Brain-flak 102, 98, 96 bytes

(({}<>))<>{({}[()])<>(({}[()])){{}(<({}[({})])>)}{}({}({}))<>}{}<>([{}]{}){<>(([()])())}({}{}())

Eww. Gross. I might post an explanation, but I barely understand it myself. This language hurts my brain.

Try it online!

Thanks to github user @Wheatwizard for coming up with a modulus example. I probably could not have figured that out myself!

Also, the shorter answer is here.

Possibly incorrect explanation:

(({}<>))                    #Push this element onto the other stack
<>                          #Move back to stack one.
{                           #While the top element is non-zero:
 ({}[()])                   #  Decrement the number on top
 <>                         #  Move to the other stack
 (({}[()]))                 #  Push the top element minus one twice
 {                          #  While the top element is non-zero:
  {}                        #    Pop the top element
  (<          >)            #    Push a zero
        ({})                #    Push the second from top element
       [    ]               #    Evalue this second from top element as negative
    ({}      )              #    And push that negative plus the top element
 }
 {}                         #  Pop the top element
 ({}({}))                   #  Push the top element plus the second from the top, AND push the second from top
 <>                         #  Switch stacks
}

{}                          #Pop the stack
<>                          #Switch to the other stack
([{}]{})                    #And push the top element minus the second element.

The rest is pretty straightforward.

{              }            #While the top element is non-zero:
 <>                         #Move to the other stack
   (([()])  )               #Push a negative one
          ()                #AND push the previously pushed value + 1 (e.g. 0)

                 (      )   #Push:
                  {}{}      #The top two elements added together
                      ()    #Plus one

James

Posted 2016-07-21T16:11:20.220

Reputation: 54 537

The rest is pretty straightforward. Yeah, it seems like it. – Erik the Outgolfer – 2016-10-10T15:57:36.927

24 bytes if you count each brainflak instruction as a byte. – noɥʇʎԀʎzɐɹƆ – 2016-11-08T12:09:21.233

17

Hexagony, 15, 13, 12 10 bytes

Everybody's favorite hexagon-based language! :D

TL;DR works using magic, unformatted solutions in decreasing byte count:

?{?..>1'%<.@!'/
?{?!1\.'%<@.>
?{?\!1@'%\!(
?{?!1\@'%<

Saved 2 bytes thanks to @MartinEnder's layout wizardry.

@FryAmTheEggman saved 1 byte by using the corners more creatively

Both @MartinEnder and @FryAmTheEggman came up with a 10 byte solution that doesn't print anything for falsely values.

My solution (15):

Unformatted:

?{?..>1'%<.@!'/

Formatted:

  ? { ?
 . . > 1
' % < . @
 ! ' / .
  . . .

@Martin Ender's Solution (13):

Unformatted:

?{?!1\.'%<@.>

Formatted:

  ? { ?
 ! 1 \ .
' % < @ .
 > . . .
  . . .

Explanation:

First, we get the input and take the modulus.

  ? { ?
 . . . .
' % . . .
 . . . .
  . . .

Then, it checks if the modulus is 0 or not. If it is, the IP turns 60 degrees left, bounces off the mirror, sets the cell to 1 and prints.

Then, the IP continues onto the fourth row. When it reaches the >, it turns to the right instead (because the value of the cell is now 1). It goes oob, and comes back in the bottom right corner heading NW. The IP hits the <, goes along the top row, and comes back in the right corner to hit the @, stopping the program.

  . . .
 ! 1 \ .
. . < @ .
 > . . .
  . . .

If the modulus turns out to be positive, the IP turns 60 degrees to the right. Once it goes out the bottom right corner, it continues on the bottom left edge because of Hexagony's wrapping rules. The ' is reused to make the IP go to a cell with 0 in it. The IP then travels along the fourth row, wraps around to the second, hits print, and gets reflected into the <. The rest of the path to the @ is the same.

  . . .
 ! . \ .
' . < @ .
 > . . .
  . . .

That's some serious wizardry.

@FryAmTheEggman's Solution (12):

Unformatted:

?{?\!1@'%\!(

Formatted:

  ? { ?
 \ ! 1 @
' % \ ! (
 . . . .
  . . .

Explanation:

Like the other solutions, it gets the input and takes the modulus.

  ? { ?
 . . . .
' % . . .
 . . . .
  . . .

Then, the IP gets deflected into the bottom corner. If the modulus is positive, it goes on the top left edge. The ? has no more input, so it sets the cell to 0. The ! then prints the 0, and the @ terminates the program.

  ? . .
 \ ! . @
. . \ . .
 . . . .
  . . .

Things are much trickier for when the modulus is 0. First of all, it gets decremented, then reset to 0, then set to 1, then printed. Then, the 1 gets decremented to 0. After that, the program runs like it does at the beginning until it tries to do 0%0. That makes it throw a silent error and quit.

  ? { ?
 . . 1 .
' % \ ! (
 . . . .
  . . .

I really like the silent error trick, but a simpler way would be to replace the ( with / so that the IP passes through the first time, but gets reflected into @ the second.

Collaborative solution (10):

Unformatted:

?{?!1\@'%<

Formatted:

  ? { ?
 ! 1 \ @
' % < . .
 . . . .
  . . .

This program starts out the same as all the other programs, getting the input and modding it.

If the input is 0, the IP turns left when it hits <. It gets deflected into 1!@, which prints 1 and quits.

  . . .
 ! 1 \ @
. . < . .
 . . . .
  . . .

If the input is positive, the IP turns right when it hits <. It exits through the corner, and goes along the top right edge hitting the @ without printing.

  . . ?
 . . . @
. . < . .
 . . . .
  . . .

Blue

Posted 2016-07-21T16:11:20.220

Reputation: 1 986

6I think you should format your answer differently. Having four answers in a single code block makes it appear as if your byte count is wrong. – mbomb007 – 2016-10-05T20:00:35.710

12

Javascript (ES6) 17 12 11 bytes

a=>b=>a%b<1
  • EDIT: Removed 5 bytes because 'a>0' is expected.
  • EDIT2: Removed 1 byte thanks to Downgoat.

user54187

Posted 2016-07-21T16:11:20.220

Reputation:

Use currying to save one byte: a=>b=> – Downgoat – 2016-07-21T16:48:21.003

So how do I execute this? When I try d=a=>b=>a%b<1 followed by d(32,2) in the JS console... I simply get the response function b=>a%b<1 – WallyWest – 2016-10-04T02:05:46.323

@WallyWest this uses currying, so you would type in d(32)(2). Because d(32) gives function b=>a%b<1, you then have to call that function with your b value – Cyoce – 2016-10-04T04:21:38.353

9

Vim, 11 keystrokes

C<C-r>=<C-r>"<C-Left>%<C-Right><1<cr>

Not bad for a language that only handles strings. :D

James

Posted 2016-07-21T16:11:20.220

Reputation: 54 537

What does <C-Left> do? Can't test it because it switches windows on mac >_> – Downgoat – 2016-07-31T17:04:50.223

1@Downgoat are you using ctrl or command? Either way, it's equivalent to "b", except that it works in insert mode too. – James – 2016-07-31T17:07:24.580

To be pedantic, it's the equivalent to B rather than b (and Ctrl+Right is the equivalent of W) - the difference is with non-word characters, but in this case it's doing the exact same thing :) http://vimdoc.sourceforge.net/htmldoc/motion.html#<C-Left>

– Christian Rondeau – 2016-10-05T03:43:18.347

9

Mathematica - 17 13 3 bytes

Thanks to @MartinEnder for saving a ton of bytes!

Yytsi

Posted 2016-07-21T16:11:20.220

Reputation: 3 582

What character is that? – Cyoce – 2016-10-04T04:38:48.463

@Cyoce I don't know its Unicode-code (on the phone at the moment), but it's an short operator for Divisible[]. – Yytsi – 2016-10-04T04:56:05.873

@Cyoce I think it's the pipe symbol, also known as shift+backslash. – Pavel – 2016-10-07T17:08:32.287

@Pavel if it were the pipe symbol, it would not be three bytes. – Cyoce – 2016-10-07T18:02:08.830

@Cyoce it's the U+2223 character: http://www.fileformat.info/info/unicode/char/2223/index.htm

– numbermaniac – 2017-02-15T06:39:06.823

8

Retina, 12 bytes

^(1+)\1* \1$

Takes space-separated input in unary, like 111111111111 1111 to check if 12 if divisible by 4. Prints 1 (true) or 0 (false).

Try it online!

FryAmTheEggman saved two bytes. Oops, rewrote my answer to take the arguments in the right order. (Then Fry beat me to it in the comments. I’m slow at regex!)

Lynn

Posted 2016-07-21T16:11:20.220

Reputation: 55 648

To fix the order, if it becomes necessary, I think ^(1+)\1* \1$ will work. – FryAmTheEggman – 2016-07-21T16:53:18.170

I guess with the new spec, the opposite input order is fine again. – Martin Ender – 2016-07-21T19:56:16.417

8

Batch, 20 bytes

@cmd/cset/a!(%1%%%2)

Outputs 1 on success, 0 on failure.

Neil

Posted 2016-07-21T16:11:20.220

Reputation: 95 035

8

C#, 27 13 12 Bytes

a=>b=>a%b<1;

Thanks to TuukkaX for pointing out anonymous lambdas are acceptable. Thanks to David Conrad for pointing me on to currying which I wasn't even aware was a thing.

Short and sweet, since we're only dealing with integers we can use <1 rather than ==0 and save a whole byte.

user19547

Posted 2016-07-21T16:11:20.220

Reputation:

I'm not sure, but I think that you can just use a lambda: (a,b)=>a%b<1;. +1. – Yytsi – 2016-07-22T11:38:37.490

@TuukkaX, thanks I wasn't sure, it just seems so cheaty. – None – 2016-07-22T11:49:42.273

The JS version of this used currying to reduce it by one byte, and that should work for C#, too: a=>b=>a%b<1; (note: you then must call it as f(a)(b) rather than f(a,b)) – David Conrad – 2016-07-22T18:32:34.793

1@DavidConrad oo that's neat, thank you. – None – 2016-07-22T20:18:49.193

7

brainfuck, 53 bytes

Takes input as bytes, output is a byte value of 0x00 or 0x01. It's the DivMod algorithm followed by Boolean negation.

,>,<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>,>[<+>,]+<[>-<-]>.

Try it online - Has a bunch of extra + near the end so you can see the output in ASCII.

mbomb007

Posted 2016-07-21T16:11:20.220

Reputation: 21 944

Could you remove the "div" part of the thing to save bytes? – Leaky Nun – 2016-07-22T12:28:02.787

1@LeakyNun This is the shortest known algorithm that gives the modulus. Removing part of it actually makes it longer, because you need more temporary cells. You cannot find a modulus without dividing. – mbomb007 – 2016-07-22T13:25:06.480

I see, thanks . – Leaky Nun – 2016-07-22T13:25:38.443

@LeakyNun Just look at how long the Division algorithm is.

– mbomb007 – 2016-07-22T13:26:13.167

There are probably shorter ones, but if so, nobody has found or posted them. – mbomb007 – 2016-07-22T13:26:44.260

7

Brain-Flak, 88 86 bytes

(<({}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}<>(({}<{}>)){{}{}(<(())>)}{}

This is a denser version of the original Brain-Flak divisibility test algorithm written by Dr Green Eggs and Iron Man DJMcMayhem and myself.

Here is a brief(ish) explanation of how it works:

  ({}<>)        #Move the top of the stack to the other stack #Start Mod
(<      >)      #Push zero
<>              #Switch stacks
{               #While the top of the stack is not zero
 ({}[()])       #Subtract one from the top of the stack
 <>             #Switch stacks
   {}()         #Pop the top, add one and ...
       [({})]   #Subtract the second element on the stack
 ((          )) #Push twice
 {              #If the top is not zero
  {}            #Pop the duplicate
    ({}({}))    #Add the second element to the first
  (<        >)  #Push zero
 }              #End if
 {}             #Pop the zero
 <>             #Switch back
}               #End While
<>              #Switch to the other stack
 ({}<{}>)       #Remove the second value on the stack         #End Mod
(        )      #Duplicate the result of modulation
{               #If the top is not zero
 {}{}           #Pop the top two elements
 (<(())>)       #Push a one and a zero
}               #End if
{}              #Pop the zero

Try it Online!

Post Rock Garf Hunter

Posted 2016-07-21T16:11:20.220

Reputation: 55 382

Link to online interpreter? – Leaky Nun – 2016-07-25T20:25:26.437

Nice work! Also welcome to the site! I hope you have fun here. (I certainly have) – James – 2016-07-25T20:57:11.017

Nice first answer, welcome to PPCG! – Leaky Nun – 2016-07-28T02:49:42.953

6

C, 60 Bytes

#include <stdio.h>
main(){int a,b;scanf("%d %d",&a,&b);a%b==0;}

Ronronner

Posted 2016-07-21T16:11:20.220

Reputation: 129

1Why -1? Explain me – Ronronner – 2016-07-21T22:06:23.477

3

It's possible that nobody downvoted. This is a short answer so it got auto-flagged as low-quality, and then you edited it. For some reason, this casts an automatic downvote. Sorry about that. +1 from me. Also, we allow functions, so you could easily shorten this to int f(a,b){return !(a%b);} or possible even shorter.

– James – 2016-07-21T22:15:29.320

Mh, If I use #include<stdio.h> int f(a,b){return !(a%b);}; main(){int a,b;scanf("%d",&a, &b);a%b==0}, It's 72 Bytes. This code is 60 bytes :) – Ronronner – 2016-07-21T22:19:20.367

3No, my point is that it does not have to be a full program. You may submit just a function instead. int f(a,b){return!(a%b);} is 25 bytes, and if you use the right compiler you could even do f(a,b){return!(a%b);} for 21 bytes. – James – 2016-07-21T22:21:48.587

I tried it, If I use gcc file.c, It returns me a lot of error. My question is ok too? – Ronronner – 2016-07-21T22:23:27.100

1

I've asked the same question before. As long as you can find at least one compiler that it builds and runs in (even with warnings), it counts.

– James – 2016-07-21T22:25:08.733

3

Even shorter function submission: #define f(a,b)!(a%b) (ideone link)

– Mego – 2016-07-21T23:17:43.993

Now my code is 15 Bytes – Ronronner – 2016-07-22T08:28:09.020

2You need to define a function or a program, not just a snippet. – Leaky Nun – 2016-07-22T11:07:37.940

Do you mean with #include and main? – Ronronner – 2016-07-22T11:38:49.010

Code snippets are not allowed; You may define an eponymous or anonymous (i.e. named or unnamed) function, or write a full program. – Erik the Outgolfer – 2016-07-22T14:39:17.140

I fixed it! It's 60 Bytes – Ronronner – 2016-07-22T17:34:52.857

@Ronronner The short one compiles files with gcc -std=c89 -c file.c (gcc 5.4.0) or with clang -std=c89 -c file.c (clang 3.7.1). – David Conrad – 2016-07-22T18:02:48.977

Do you mean this? int f(a,b){return!(a%b);} – Ronronner – 2016-07-22T18:03:56.057

@Ronronner Yes, that. – David Conrad – 2016-07-22T18:04:12.617

It doesn't return nothing../a.out 2 2 – Ronronner – 2016-07-22T18:04:55.720

I think you can remove the space in #include <stdio.h>, and I believe instead of int a,b; you can do a;b; – Cyoce – 2016-10-04T04:38:23.077

Got it down to 16 http://codegolf.stackexchange.com/a/110084/16513

– Albert Renshaw – 2017-02-15T03:22:01.373

6

LOLCODE, 74 64 bytes

HOW IZ I f YR a AN YR b
BOTH SAEM MOD OF a AN b AN 0
IF U SAY SO

OldBunny2800

Posted 2016-07-21T16:11:20.220

Reputation: 1 379

It is a full program, current implementations do not require HAI and KTHXBYE – OldBunny2800 – 2016-07-22T15:50:40.493

OK, I'll try. One sec… – OldBunny2800 – 2016-07-22T15:59:02.073

No, it's two bytes longer. – OldBunny2800 – 2016-07-22T16:01:51.170

O RLY? I didn't know that! changing. – OldBunny2800 – 2016-07-22T16:09:20.263

BTW here is golfing tips. – Leaky Nun – 2016-07-22T16:11:15.880

oh wow oops. Changing. – OldBunny2800 – 2016-07-22T16:12:28.373

Do you need the ANs? – Erik the Outgolfer – 2016-07-26T14:15:46.527

Yes in this case. – OldBunny2800 – 2016-07-26T19:26:55.150

5

Dyalog APL, 3 bytes

0=|

Is zero equal to the division remainder?

Adám

Posted 2016-07-21T16:11:20.220

Reputation: 37 779

3This works in J too. – miles – 2016-07-21T16:34:28.187

5

R, 22 20 bytes

a=scan();!a[1]%%a[2]

As usually, reads two numbers from the input that is terminated by an empty line.

Update: thanks to Jarko Dubbeldam for shaving off 2 bytes (despite the fact that his edit was rejected, it was very helpful!).

Andreï Kostyrka

Posted 2016-07-21T16:11:20.220

Reputation: 1 389

5

Java 8, 11 bytes

a->b->a%b<1

What the heck, there are JS and C# versions of this, why not a Java version, too?

Usage:

import java.util.function.Function;

public class Program {
    public static void main(String[] args) {
        System.out.printf("%d, %d %b%n", 9, 3, divides(9, 3, a->b->a%b<1));
        System.out.printf("%d, %d %b%n", 3, 9, divides(3, 9, a->b->a%b<1));
    }

    public static boolean divides(int a, int b,
            Function<Integer, Function<Integer, Boolean>> f) {
        return f.apply(a).apply(b);
    }
}

David Conrad

Posted 2016-07-21T16:11:20.220

Reputation: 1 037

a->b->a%b<1 This raises a syntax error, doesn't it? – user8397947 – 2016-07-23T16:17:12.907

2No, it's valid Java 8. – David Conrad – 2016-07-23T21:25:09.393

Sometimes even Java is looking like Perl... – Mega Man – 2016-07-27T17:06:27.973

Yeah, I'd add in that this is Java 8 only ;). – Magic Octopus Urn – 2016-09-13T20:23:05.890

so with Java 8 we have to count only lambda expression bytes not the whole class and function boilerplate, cool ! – Sikorski – 2016-10-03T06:43:48.397

@Sikorski When the challenge asks for a function or a "program or function." If it calls for a complete program, you still need it. – David Conrad – 2016-10-03T17:17:16.520

4

Python, 16 bytes

lambda D,d:D%d<1

Dennis

Posted 2016-07-21T16:11:20.220

Reputation: 196 637

1Note that this wouldn't work if negative integers were allowed. Luckily, the inputs are strictly positive. – TLW – 2016-07-24T00:46:17.863

I did lambda a,b:1.*a/b==a/b, but was quite impressed. This is a so complex piece of code... – Erik the Outgolfer – 2016-10-03T10:53:45.310

4

CJam, 6 4 bytes

Saved 2 bytes thanks to Dennis

q~%!

Try it online

q    e# Take in the input
 ~   e# Dump the individual values to the stack
  %  e# Modulus
   ! e# Boolean NOT

Business Cat

Posted 2016-07-21T16:11:20.220

Reputation: 8 927

4

GolfScript, 3 bytes

~%!

Explanation:

~    # Evaluate the input
 %   # Take the first modulus the second
  !  # Boolean not

Try it online!

Loovjo

Posted 2016-07-21T16:11:20.220

Reputation: 7 357

4

Fatalize

Posted 2016-07-21T16:11:20.220

Reputation: 32 976

3

Pyth, 6 4 3 bytes

%.*

Try It Online!

Input is passed as an array [n,d]. Output is zero for false and a positive integer for true.

Explanation follows:

 .*   Unwraps input (from [n,d] to n, d)
%     Takes n (mod d).

ericeschnei

Posted 2016-07-21T16:11:20.220

Reputation: 71

3Welcome to PPCG! – Steadybox – 2018-01-12T23:02:50.420

3

Tcl , 34 bytes

ge stdin a
ge stdin b
exp $a%$b<1

My first /*successful*/ attempt in codegolf ! This code must be executed in Tcl shell , otherwise it will not work.

One byte thanks to @Lynn .

Four bytes thanks to @Lynn and @LeakyNun (now I understand what he meant)!

user55673

Posted 2016-07-21T16:11:20.220

Reputation:

Can you omit ?1:0? – Leaky Nun – 2016-07-21T16:33:15.587

@LeakyNun it's ternary operation . you mean just to return sth when it's devisible ? – None – 2016-07-21T16:34:09.143

What would $a%$b==0 return? – Leaky Nun – 2016-07-21T16:36:19.743

@LeakyNun truth value – None – 2016-07-21T16:36:47.617

@LeakyNun have look here

– None – 2016-07-21T16:37:22.023

1I mean, can your third line just be exp $a%$b==0? – Leaky Nun – 2016-07-21T16:42:06.617

1Or exp $a%$b<1, maybe? – Lynn – 2016-07-21T16:57:09.600

You can reduce it to 27: exp [ge stdin]%[ge stdin]<1. I tried on https://www.tutorialspoint.com/execute_tcl_online.php by typind tclsh on the green area to enter in the interactive shell.

– sergiol – 2017-02-15T01:56:48.077

3

Fortran 95, 78 bytes

function f(i,j)result(k)
integer::i,j,k
k=merge(1,0,MOD(i,j)<1)
end function f

Jeremy

Posted 2016-07-21T16:11:20.220

Reputation: 521

3

Julia, 9 bytes

D\d=D%d<1

Try it online!

Dennis

Posted 2016-07-21T16:11:20.220

Reputation: 196 637

3

PowerShell v2+, 20 bytes

!($args-join'%'|iex)

Takes input as two command-line arguments $args, -joins them together into a string with % as the separator, pipes that to iex (short for Invoke-Expression and similar to eval). The result is either 0 or non-zero, so we take the Boolean not ! of that result, which means either $TRUE or $FALSE (non-zero integers in PowerShell are truthy). That Boolean is left on the pipeline and output is implicit.

Alternative versions, also 20 bytes each

param($a,$b)!($a%$b)
!($args[0]%$args[1])

Same concept, just slightly different ways of structuring the input. Thanks to @DarthTwon for providing these.

Examples

PS C:\Tools\Scripts\golfing> .\divisibility-test.ps1 24 12
True

PS C:\Tools\Scripts\golfing> .\divisibility-test.ps1 24 13
False

PS C:\Tools\Scripts\golfing> .\divisibility-test.ps1 12 24
False

AdmBorkBork

Posted 2016-07-21T16:11:20.220

Reputation: 41 581

In both of the other methods I tried golfing this question, I got them to 20 bytes also: param($a,$b)!($a%$b) and !($args[0]%$args[1]) – ThePoShWolf – 2016-07-26T14:48:09.473

@DarthTwon Indeed. When dealing with small amounts of operations, there's usually at most one or two bytes differences in the different ways of taking the input arguments. – AdmBorkBork – 2016-07-26T15:01:42.640

I was hoping to come up with something shorter :P but yeah, there's always multiple ways to skin the cat, especially in PS. – ThePoShWolf – 2016-07-26T15:10:42.117

3

Haskell, 13 11 bytes

((1>).).mod

This defines a new function (!) :: Integral n => n -> n -> Bool. Since mod n m returns only positive numbers if n and m are positive, we can save a byte by using 1> instead of 0==.

Usage:

ghci> let n!d=1>mod n d
ghci> 100 ! 2
True
ghci> 100 ! 3
False

Zeta

Posted 2016-07-21T16:11:20.220

Reputation: 681

You can go pointfree and save 2 bytes: ((1>).).mod. – nimi – 2016-08-05T20:10:11.607

3

PHP, 23 22 bytes

<?=$argv[1]%$argv[2]<1

prints 1 for true, empty string (=nothing) for false

call from cli with n and d as arguments


10 bytes for ancient PHP: <?=$n%$d<1

Titus

Posted 2016-07-21T16:11:20.220

Reputation: 13 814

If you don't mind using PHP4.1: <?=!($A%$B). The values can be passed as part of your $_SESSION, $_COOKIE, $_POST, $_GET or (if I'm not mistaken) over $_ENV. – Ismael Miguel – 2016-07-22T17:38:15.063

@Ismael Miguel: Actually I don´t, but I am tired of posting for ancient PHP versions and adding for PHP<5.4 with register_globals=On. But I´ll add it for reference. – Titus – 2016-07-22T17:57:03.143

Actually, you can't say "for PHP<5.4 with register_globals=On", since you have to count the bytes of your php.ini file containing register_globals=On. However, PHP4.1 is a special case. It is the last version where register_globals=On is the default value, and most functions are available from PHP4.1 and up. This version also allows the use of other functions, like ereg and split without warnings. – Ismael Miguel – 2016-07-22T19:07:09.167

3

MarioLANG, 121 109 107 bytes

Saved 14 bytes thanks to Martin Ender

;>(-)-)+(([!)
)"=========#[
; +(![-)< )<!+
  ==#==="  "#:
>!< >(+ !![(<
=#"="===##=:"
  !      <
  #======"

Try it online!

Explanation

The algorithm is simply to keep subtracting d from n to see if you can do it an integer number of times and have no remainder.

;
)
;

>
=
 
 

First, the input is collected. n is in the first cell, d in the second.

 >(-)-)+(([!
 "=========#
          )<
           "
 !
 #"="===##=
  
  

This is essentially the main loop. It decrements the first and second cells, and increments the third.

           [!)
           =#[
             !+
             #:
            (<
            :"
 
 

This is the final output. If after the incrementing/decrementing, the first cell is 0, then we've eliminated n. If after this, the second cell (d) is 0, then d went into n evenly. We increment and print (1). Otherwise, move back to the first cell (which is 0) and print it.

 
 
  +(![-)<  
  ==#==="  
 !< >(+ !![
 #"="===##=
  !      <
  #======"

This loop happens if the second cell is 0 after incrementing and decrementing. It copies the third cell to the second cell. The part at the bottom is to bypass the loop if the cell is not 0.

Business Cat

Posted 2016-07-21T16:11:20.220

Reputation: 8 927

3

C, 20 19 bytes

#define f(a,b)a%b<1

Defines a macro f(a,b), which gets preprocessed to !(a%b). I assure you you don't need parens here, because it's just a unary operator. Anyways, if you're a purist, then this will do it, at 25 bytes:

#define f(a,b)((a)%(b)<1)

For a real function, go check Albert's answer :)

Erik the Outgolfer

Posted 2016-07-21T16:11:20.220

Reputation: 38 134

+1 This is very clever I've never seen a pre-processor answer before but it saves so much hassle of using return and {, }, ; which are always killers for C on codegolf! – Albert Renshaw – 2017-02-15T03:00:45.050

Think I got you beat at 16 bytes though http://codegolf.stackexchange.com/a/110084/16513

– Albert Renshaw – 2017-02-15T03:11:14.723

3

J, 3 bytes

0=|

Usage:

2 (0=|) 10 

Will return 1. And is equivalent to pseudocode 10 MOD 2 EQ 0

Note this is very similar to the APL answer, because J is heaviliy inspired by APL

emiflake

Posted 2016-07-21T16:11:20.220

Reputation: 131

Nice first answer, welcome to PPCG! – Leaky Nun – 2016-07-23T23:17:24.650

@LeakyNun Thanks, I've always browsed around, nice to finally answer. – emiflake – 2016-07-24T08:54:58.303

3

Forth (gforth), 13 12 bytes

: x mod 0= ;

:   - create new word
x   - word name
mod - modulus operator
0=  - compare value on stack with 0
;   - end word

Use like n d x .

Test cases (-1 is true, 0 is false) :

1 1 x . -1  ok
2 1 x . -1  ok
6 3 x . -1  ok
17 17 x . -1  ok
22 2 x . -1  ok
1 2 x . 0  ok
2 3 x . 0  ok
2 4 x . 0  ok
3 9 x . 0  ok
15 16 x . 0  ok

My first submission! :D

2xsaiko

Posted 2016-07-21T16:11:20.220

Reputation: 699

2

Chip, 356 bytes

*Z~v---v---v---v---v---v---v---.
e H/vZG/vZF/vZE/vZD/vZC/vZB/vZA/vZ
 f*z|)--x)--x)--x)--x)--x)--x)--x)~a
A~#Mxx--xx--xx--xx--xx--xx--xx--xx.
B~#Mxx--xx--xx--xx--xx--xx--xx. `@'
C~#Mxx--xx--xx--xx--xx--xx. `@@--'
D~#Mxx--xx--xx--xx--xx. `@@--('
E~#Mxx--xx--xx--xx. `@@--('
F~#Mxx--xx--xx. `@@--('
G~#Mxx--xx. `@@--('
H~#Mxx. `@@--('
 t~Z`@@--('
,^-{-('
`~Ss

Try it online!

The basic strategy here is to repeatedly subtract the divisor from the dividend until we hit zero, or we go negative. Since Chip only has adders, we negate the divisor and repeatedly add instead, looking for the first iteration that doesn't result in an overflow. Chip operates on eight bits at a time, so this solution only handles positive, signed, two's complement, one-byte integers; therefore input values are allowed to range from 1 to 127. Zero values are somewhat handled: 0/n and 0/0 are truthy; n/0 is falsy.

Each input value is read as a byte, which is why the TIO uses a bit of awk. The inputs saved in the TIO link are the test case 22/2==truthy.

Output is given as ASCII '0' or '1', because it required no extra bytes over code points 0x0 and 0x1.

How it works

This is rather complex (as you may have noticed), so I'll just cover the highlights.

On the first cycle, the dividend, n, is read in via the elements A through H in line 2, and stored for the next cycle in the Z elements to their right.

On the second tick, the divisor, d, is read in via A through H in the first column of lines 4 and onward. This is immediately bitwise-negated via the ~'s and incremented by one via the #'s. We can now store the inverse value, -d, in the column of M elements.

Starting on the second cycle, and every cycle thereafter, n is incremented by -d in the diagonal grouping of @ elements (each pair corresponds to a full-adder), and the new value is stored back in the Z's above.

If there is no overflow carry on the operation, the block with t, S, and s in the lower left will print out one byte and terminate execution. The a at top right will determine whether a '1' or a '0' is printed, based on whether n is currently zero or not.

The other Z and z elements are to provide initialization values for the first cycle, since we don't have d yet. The elements e and f in the top left perform the mapping to ASCII for output. Pretty much all the other elements are wires, to connect everything up.

Phlarx

Posted 2016-07-21T16:11:20.220

Reputation: 1 366

2

C, 16 bytes

Believe it or not C (GCC) will return the last modified value if no return method is called.

That said,

f(a,b){a=a%b<1;}

Try it online


Special thanks to @Ahemone and @l4m2 for teaching me about this trick today

Albert Renshaw

Posted 2016-07-21T16:11:20.220

Reputation: 2 955

1It's not first argument, but last modified value – l4m2 – 2018-03-23T06:39:42.070

@l4m2 I was wondering how correct that was, thank you; editing it in! – Albert Renshaw – 2018-03-23T06:47:48.440

2

ArnoldC, 244 bytes

HEY CHRISTMAS TREE r
YOU SET US UP 0
GET TO THE CHOPPER r
HERE IS MY INVITATION a
I LET HIM GO b
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE r
TALK TO THE HAND 0
BULLSHIT
TALK TO THE HAND 1
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED

Try it online!

How it works

HEY CHRISTMAS TREE r               // Define Variable r
YOU SET US UP 0                    // Set r to 0 

GET TO THE CHOPPER r               // Start declaration of r 
HERE IS MY INVITATION a            // Use a for calculation
I LET HIM GO b                     // set r to a mod b
ENOUGH TALK                        // End declaration of r

BECAUSE I'M GOING TO SAY PLEASE r  // if r > 0
TALK TO THE HAND 0                 // print 0
BULLSHIT                           // else
TALK TO THE HAND 1                 // print 1
YOU HAVE NO RESPECT FOR LOGIC      // end if

YOU HAVE BEEN TERMINATED           //end main

Tom291

Posted 2016-07-21T16:11:20.220

Reputation: 313

2

ECMAScript Regex, 10 bytes

^(x+),\1*$

Try it online!

Deciding to learn this after seeing some of Deadcode's amazing submissions. Clearly, I'm starting off with much easier problems. Takes input as d,n, with both number in unary, and matches if the n is divisible by d.

Explanation:

^           From the start of the string
 (x+)       Capture d xs in \1
     ,      Match the separator
      \1*^  In n, match d repeatedly until the end of the string

Jo King

Posted 2016-07-21T16:11:20.220

Reputation: 38 234

2

Pyke, 2 bytes

%!

Try it here!

not (a mod b)

Blue

Posted 2016-07-21T16:11:20.220

Reputation: 26 661

2

Actually, 3 2 bytes

%Y

Saved one byte thanks to @Mego.

Try it online!

user48538

Posted 2016-07-21T16:11:20.220

Reputation: 1 478

%Y is shorter – Mego – 2016-07-21T23:19:59.593

2

MATL, 2 bytes

\~

Try it online!

\    % Take two inputs implicitly. Compute their modulo
~    % Logical negate. Implicit display

Luis Mendo

Posted 2016-07-21T16:11:20.220

Reputation: 87 464

2

Befunge, 6 bytes

&&%!.@

Try it here! Input two numbers, separated by a space. Output is 0 or 1 for falsy or truthy.

user55852

Posted 2016-07-21T16:11:20.220

Reputation:

&<@.!% also works – MildlyMilquetoast – 2017-02-14T23:05:27.040

2

JavaScript (ES6), 12 Bytes

EDIT

This post was beaten here


d=>h=>d%h==0

Explanation:

d=>
   h=>
    d%h==0 // Is the remainder of d/h equal to 0 (i.e. is it divisible)

MayorMonty

Posted 2016-07-21T16:11:20.220

Reputation: 778

How is it different from this?

– Leaky Nun – 2016-07-22T12:34:18.567

Sorry, I only checked the first page for answers! Didn't even know that existed. I'll delete it now. – MayorMonty – 2016-07-22T15:59:45.787

2

Excel VBA, 62 bytes

Function q(b, c)
If b / c = Int(b / c) Then q = 1
End Function

tjb1

Posted 2016-07-21T16:11:20.220

Reputation: 561

2

VBA, 46 44 41 bytes

Function f(i,j)
f=i Mod j = 0
End Function

user3819867

Posted 2016-07-21T16:11:20.220

Reputation: 439

Yes, thank you! – user3819867 – 2016-07-22T12:28:19.320

Thanks again. I also made a personal favorite f=InStr(i/j,".")=0. Doesn't work with decimal commas and isn't winning bytes. – user3819867 – 2016-07-22T12:47:17.190

Personal preference; when I'm testing values with Mod, I put the test constant first: 0=i Mod j And if you append the body line onto the function declaration, , you'll actually get the End Function line for the price of pressing Enter: Function f(i,j):f=0=i Mod j (28 bytes) – Joffan – 2016-07-23T18:34:21.350

2

Bash, 23 bytes

expr `expr $N % $D` % 2

I'm sure it can be even shorter...

Output is 0 if N is divisible by D, 1 if it is not

Universal Electricity

Posted 2016-07-21T16:11:20.220

Reputation: 129

3Truthy and falsy don't mean literally the strings "truthy and "falsy", just whatever the natural true/false values are for the language. In the case of bash I'd say an exit code of 0 for truthy and an exit code of 1 for falsy would be appropriate here. – a spaghetto – 2016-07-22T16:09:12.730

How does % 2 give 1 for 0 and 0 for everything else? – Titus – 2016-07-22T18:02:14.937

@Titus % 2 means modulo 2. It divides $N by $D, then returns the remainder – Universal Electricity – 2016-07-23T14:18:04.283

I know % ... but %2 will give you 0 for 0 and for every other even remainder, 1 for odd remainders, i.e. a falsy value (0) for remainder 0 (which should have a truthy result) and a truthy one (1) for half of the possible remainders (that should all return a falsy value). – Titus – 2016-07-23T15:05:51.243

This answer is incorrect. It gives 0 (divisible) for N=2 and D=4 for example. – seshoumara – 2016-10-11T09:37:35.680

2

Jellyfish, 5 bytes

pN/|i

Input is a list containing [d n].

Try it online!

The i is replaced with the input value when the program starts. /| folds modulo over the list, taking the second list element modulo the first. N is logical negation, giving 1 for input 0 and 0 for everything else.

Martin Ender

Posted 2016-07-21T16:11:20.220

Reputation: 184 808

2

R, 20 bytes

Small improvement on this answer.

a=scan();!a[1]%%a[2]

If the result of the modulo operation is 0, this is interpreted as a false, which is then inverted by the !. Any other number would be a truthy, which again is inverted by the ! into a false.

JAD

Posted 2016-07-21T16:11:20.220

Reputation: 2 898

2

Forth, 6 bytes

mod 0=

example usage

10 2 mod 0=

This is the same code given by @therealfarfetchd, but without the definition (almost all other entries are not given in definition format)

Ala'a Mohammad

Posted 2016-07-21T16:11:20.220

Reputation: 51

Is this actually a full program then? All answers are required to be either full programs or callable functions, not just snippets.

– Martin Ender – 2016-10-11T17:48:44.357

@MartinEnder When I answer in Forth, I always use a function (word) declaration, because the standard method of taking input is having it already on the stack, and returning is leaving it on the stack or printing. Idk if there is a difference between a full program and a snippet, so I've always considered it a snippet. – mbomb007 – 2016-10-11T18:07:10.853

@MartinEnder check short answers above, (i.e. Befunge, Tcl, J, PowerShell, Jellyfish, Pyth, Minkolang, Perl 5, 05AB1E, R ... etc). – Ala'a Mohammad – 2016-10-13T14:33:51.713

@Ala'aMohammad I don't know Tcl but Befunge, Powershell, Jellyfish, Pyth, Minkolang, 05AB1E, R are all full programs. Perl and J are callable functions. – Martin Ender – 2016-10-13T14:37:12.117

@MartinEnder for example in 'J' shouldn't functions(verbs) start at least with assignment '=:'? (which is not used in J here) – Ala'a Mohammad – 2016-10-14T20:43:36.997

@Ala'aMohammad Unnamed functions are acceptable. http://meta.codegolf.stackexchange.com/questions/1501/should-function-literals-be-allowed-when-a-function-is-asked-for/1503#1503

– Martin Ender – 2016-10-14T20:44:05.043

@MartinEnder Thanks for the link. J example is an expression denoting a function. I failed to find any documentation/references. Also R example is an expression (or a program, but not a function), Any documentation/references for these two explaining unnamed function similar to what is provided above will help me. Thanks for your patience. – Ala'a Mohammad – 2016-10-16T18:34:32.607

1

Python 2, 24 bytes

print input()%input()==0

sonrad10

Posted 2016-07-21T16:11:20.220

Reputation: 535

Only works with Python 2 not 3 – user41805 – 2016-11-20T19:43:28.800

Sorry, I mistyped on the title, it was meant to say python 2 – sonrad10 – 2016-11-20T19:47:18.533

1

Groovy, 12 chars/bytes

Adding a Groovy version just for the sake of completeness, and for a comparison with the Java 8 snippet above.

Groovy is a Java-based language compiled to JVM bytecode, and was designed with a very concise syntax in mind, allowing less boilerplate code than pure Java. But if failed this time! The actual code is one byte shorter than Java, but needs the curly braces in order to compile as an anonymous closure, making it 1 byte longer at 12 bytes:

{n,d->n%d<1}

To run with n=9, d=3, just do this:

println ({n,d->n%d<1}(9,3))

You can try it online on http://groovyconsole.appspot.com

Rado

Posted 2016-07-21T16:11:20.220

Reputation: 161

1

ASMD, 3 bytes (non-competing)

%0=

Oliver Ni

Posted 2016-07-21T16:11:20.220

Reputation: 9 650

1

Keg, 2 bytes

%;

Try it online!

Takes 2 integers, modulos them. A zero value is falsy, and a non-zero value is truthy; therefor the decrement instruction ; reverses those values.

user85052

Posted 2016-07-21T16:11:20.220

Reputation:

2 bytes – Lyxal – 2020-01-02T23:28:15.470

1

Pyth, 3 bytes

!%F

Test suite.

Leaky Nun

Posted 2016-07-21T16:11:20.220

Reputation: 45 011

1Alternatively: }iF – FryAmTheEggman – 2016-07-21T16:21:30.800

1

05AB1E, 6 bytes

II%0Q,

Uses CP-1252 encoding. Try it online!

You can also use the built in

Ö

which does exactly what the challenge asks. Just that the 2 inputs are swapped. Try it online!

user48538

Posted 2016-07-21T16:11:20.220

Reputation: 1 478

Very nice! You can also use the built-in Ö which does exactly what the challenge asks. You only need to specify that the 2 inputs are swapped.

– Adnan – 2016-07-21T22:29:16.157

IIrÖ solves that problem, doesn't it? – Magic Octopus Urn – 2016-10-07T18:14:33.697

1

Minkolang 0.15, 6 bytes

nn%,N.

Try it here!

Explanation

nn        Take two numbers from input
  %       Pop b, a and push a%b
   ,      NOT top of stack
    N.    Output as number and stop.

El'endia Starman

Posted 2016-07-21T16:11:20.220

Reputation: 14 504

1

Clojure, 64 bytes

(fn[n d](nil?(some #((set %) \a)(partition d d "a" (range n)))))

Not a competitive solution but does not use any arithmetic operations. Partitions range 0 .. n into lists of length d and if there is not enough elements for the last list adds "a"s to it. And then try to find a list which contains \a character.

See it online: https://ideone.com/prK5Iq

cliffroot

Posted 2016-07-21T16:11:20.220

Reputation: 1 080

1

Perl 5, 14 bytes

A subroutine:

{!((pop)%pop)}

See it in action thus:

perl -E"say sub{!((pop)%pop)}->(3,17)"

First argument is d, second is n.

msh210

Posted 2016-07-21T16:11:20.220

Reputation: 3 094

1

Labyrinth, 8 bytes

??
@%
!1

Input is just the two numbers, using any non-numeric separator of your choice. Output is either 1 for truthy or nothing at all for falsy.

Try it online!

Alternative solution that prints 0 for falsy but terminates with an error (same byte count):

<1%??
!;

Explanation

There's only one branch in the execution and that's after the modulo (%). When the input is a truthy case, the following is executed:

?   Read integer and push onto stack.
?   Read integer and push onto stack.
%   Take the first modulo the second integer. The result is zero, so the
    instruction pointer keeps moving south.
1   Turn that zero into a one.
!   Print it.
@   Terminate the program.

Otherwise, the following code is executed:

?   Read integer and push onto stack.
?   Read integer and push onto stack.
%   Take the first modulo the second integer. The result is positive, so
    the instruction pointer turns west.
@   Terminate the program.

Martin Ender

Posted 2016-07-21T16:11:20.220

Reputation: 184 808

1

Excel, 31 13 bytes

=0=MOD(A1,A2)

Enter n in A1, d in A2.

For some reason I convinced myself that we had to handle all integers, so I had =IFERROR(A1/A2=INT(A1/A2),A1=0) to handle d=0.

Joffan

Posted 2016-07-21T16:11:20.220

Reputation: 832

1

F#, 18 bytes

let d a=(%)a>>(=)0

Usage:

d 6 3;;
> val it : bool = true

I can shave 1 byte if I define a lambda instead but then I can't use it later.

fun a->(%)a>>(=)0

asibahi

Posted 2016-07-21T16:11:20.220

Reputation: 371

1

C++, 36 bytes

bool d(int n, int d){return n%d==0;}

Explanation:

bool isDivisible(int dividend, int divisor) {
    return n % d == 0; // the modulo operator returns remainder,
    // if the number evenly divides, there will be no remainder
}

Usage:

#include <iostream>
#include <string>
int main(int argc, char *argv[]) {
    int div = std::stoi(argv[1]);
    int divis = std::stoi(argv[2]);
    if (isDivisible(div, divis)) {
        std::cout << "They're evenly divisible!" << std::endl;
    } else {
        std::cout << "They're not evenly divisible." << std::endl;
    }
    return 0;
}

InitializeSahib

Posted 2016-07-21T16:11:20.220

Reputation: 491

Nice! Try this, though. It uses a int to take off 1 byte, uses the less than operator to take off another, and removes a whitespace. int d(int n,int d){return n%d<1;} – Jeremy – 2016-07-22T12:58:27.533

1

C, 33 bytes

int k(int n,int d){return 1>n%d;}

Returns a non-zero integer if the number n is divisible by d, zero otherwise.

Zeta

Posted 2016-07-21T16:11:20.220

Reputation: 681

1

Racket, 26 bytes

(λ(n m)(integer?(/ n m)))

Winny

Posted 2016-07-21T16:11:20.220

Reputation: 1 120

1

C++11, 31 bytes

[](int n,int d){return n%d<1;}

Uses the fact that a%b is always non-negative for positive numbers, and therefore only n%d==0 fulfills n%d<1.

Usage:

int main(){
   const auto lambda = [](int n,int d){return n%d<1;};
   std::cout << lambda(100,2) << "\n";
             << lambda(100,3) << std::endl;
}

Result:

1
0

Zeta

Posted 2016-07-21T16:11:20.220

Reputation: 681

1

Element, 7 bytes

__%?!"`

Wow, I'm even more disappointed than expected. It takes two numbers as input, performs the modulo operation, tests for truthiness, negates the result (so a modulo of 0 is converted to a "true" and other numbers are "false"), then moves this result to the main stack, and then outputs it.

PhiNotPi

Posted 2016-07-21T16:11:20.220

Reputation: 26 739

1

Clojure, 15 bytes

#(=(mod % %2)0)

MattPutnam

Posted 2016-07-21T16:11:20.220

Reputation: 521

1

dc, 8 7 bytes

Input is delimited by a space: n d

?~/z1-n

If false, it outputs 0. If true, it outputs 1 and throws an error about division by zero.

Explanation:

?   # Take input from stdin.
~   # Pop two values from stack. Push quotient. Push remainder.
/   # Attempt to divide quotient by remainder.
    #   If input is divisible, then remainder is 0.
    #     Division fails, throwing an error and leaving both numbers on stack.
    #     (Stack depth is 2.)
    #   If input is not divisible, then remainder is not 0.
    #     Division succeeds, and result is pushed on stack. (Stack depth is 1.)
z   # Push stack depth on stack. (If divisible, push 2; if indivisible, push 1.)
1-  # Subtract 1 from top of stack. ToS is now 1 or 0.
n   # Pop top of stack and print it as a number.

Joe

Posted 2016-07-21T16:11:20.220

Reputation: 895

Ironically, this reports that all numbers are divisible by 0. – Joe – 2016-07-23T00:42:05.453

I came back and re-read this answer and it totally confused me. "Why was I dividing the quotient? What was I thinking?" I just realized, it doesn't matter what the quotient is, or what the second quotient is. What matters is whether the division is possible—if the ~ gave remainder 0, then division is not possible again, which is what differentiates a true case from a false one. – Joe – 2016-10-04T06:47:14.747

1

Sesos, 16 bytes

Hexdump:

0000000: d6659c af71e7 a0fbf8 70cedc ae8de7 1e             .e..q....p......

Try it online!

Assembler:

set numin
set numout
get,fwd 1,get,rwd 1
jmp
  fwd 1,sub 1,fwd 1,add 1,rwd 1
  jmp
    fwd 2
  jnz
  fwd 1
  jmp
    sub 1,rwd 1,add 1,fwd 1
  jnz
  rwd 3
  jmp
    rwd 1
  jnz
  fwd 1
  sub 1
jnz
fwd 4,add 1,rwd 2
jmp
  fwd 1
jnz
fwd 2
put

Brainfuck: ,>,<[>->+<[>>]>[-<+>]<<<[<]>-]>>>>+<<[>]>>.

Leaky Nun

Posted 2016-07-21T16:11:20.220

Reputation: 45 011

1

ROOP, 24 bytes

I
w
 w
R #H
 #
N
 #
W
O#

The I is the input object. When the object is on the operator w wait the entry of a number that puts it under. Then the I moves to the right and falls on the second w waiting for the second number. The operator R removes those two numbers, and make the remainder of divide them below. The N operator removes that number and creates a 1 if the number was 0, and 0 otherwise. Then the W operator puts that number in the O object representing the output. At the same time the I reached the operator H that ends execution.

DarkPhantom

Posted 2016-07-21T16:11:20.220

Reputation: 191

1

Batch, 27 bytes

for /l %a IN (1,1,10)DO @%a

Does ' is not recognized as an internal or external command, operable program or batch file.' count as a separator?

sudoBash

Posted 2016-07-21T16:11:20.220

Reputation: 41

1

Java, 13 bytes

(a,b)->a%b<1;

This is a java.util.function.BiPredicate<Integer, Integer>.

As something that makes more sense to those who are new to Java, it takes up 37 bytes:

boolean A(int b,int B){return b%B<1;}

As something that compiles, it takes up 46 bytes:

class a{boolean A(int b,int B){return b%B<1;}}

As something that runs, it takes up 104 bytes:

interface a{static void main(String[]A){System.out.print(Integer.decode(A[0])%Integer.decode(A[1])<1);}}

For the sake of completeness, here's a 50-byte lambda that checks if an arbitrarily large integer a is divisible by another arbitrarily large integer b. It's a BiPredicate<BigInteger, BigInteger>.

(a,b)->a.mod(b).equals(java.math.BigInteger.ZERO);

user8397947

Posted 2016-07-21T16:11:20.220

Reputation: 1 242

I'm quite sure that there's this exact answer somwhere here... – Leaky Nun – 2016-07-23T16:40:35.583

@LeakyNun Well, in fact this is semantically different than the answer you're looking for - David's answer nests two lambdas, while mine uses a single lambda with two parameters. They just exploit the identical rule which states that if a is divisible by b then a mod b is 0.

– user8397947 – 2016-07-23T16:48:27.223

1

Logicode, 289 262 bytes

Presenting the language that's more verbose than Java!

circ d(n)->cond n<->0+n/d(n>)
circ e(n)->[
cond n->var a=~((~(d(n)))>)/var a=0
cond (~n)<->var b=a+0/var b=e(a)+1
b
]
circ f(a,b)->cond *a&*b->f(e(a),e(b))/a
circ g(a,b)->!(*(f(b,a)))
circ h(a,b)->cond b->h(e(a),e(b))/a
circ i(a,b)->cond g(a,b)->i(h(a,b),b)/c(a)

I'll post an explanation later, but it's basically a shortened version of my prime checker.

Added a new feature: * (boolean)!

clismique

Posted 2016-07-21T16:11:20.220

Reputation: 6 600

1

Emotinomicon, 16


Explanation:

 
        pushes integer input
        pushes integer input
        pops n,m; pushes n mod m
        pops n; outputs as number

Returns zero for truthy if first integer is divisible by second, returns non-zero for falsy.

Roman Gräf

Posted 2016-07-21T16:11:20.220

Reputation: 2 915

1

Vitsy, 1 Byte

This is a function that leaves 0 on the stack if true and a non-zero integer on the stack if false.

M

(This is the modulo function.)

Try it Online!

(N has been added for output).

Addison Crump

Posted 2016-07-21T16:11:20.220

Reputation: 10 763

Is 0 truthy in Vitsy? – Dennis – 2016-10-05T17:29:39.850

@Dennis: Technically -1 < x < 1 is truthy because of how I've set up the ( (if) command. – Addison Crump – 2016-10-05T17:30:41.413

Huh. A bit unconventional, but certainly interesting. – Dennis – 2016-10-05T17:33:10.900

1

05AB1E, 2 1 byte

Ö

Try it online!

Was (Test here) but arguments switched (suggested by @Mego). This allowed me to golf down to 1 byte.

Explanation (old):

s    Reverses input e.g. 6, 3 -> 3,6 so that input is in correct order
 Ö   Checks if (top of stack % second top of stack) == 0 e.g. 6 % 3 == 0
     Implicitly prints (1 because 6 % 3 = 0)

Geno Racklin Asher

Posted 2016-07-21T16:11:20.220

Reputation: 466

Reversing the stack isn't necessary - you can just take the input in the opposite order. – Mego – 2016-10-07T17:24:50.517

Are you sure the inputs can be taken in that order according to the rules? If they can, I will switch to just Ö. @Mego – Geno Racklin Asher – 2016-10-07T18:38:30.687

1

Elixir, 14 bytes

&rem(&1,&2)==0

Anonymous function defined using the capture operator.

Full program with test cases (yes, the . in the function call is mandatory!):

s=&rem(&1,&2)==0
# test cases
IO.puts s.(1,1) # true
IO.puts s.(2,1) # true
IO.puts s.(6,3) # true
IO.puts s.(17,17)   # true
IO.puts s.(22,2)    # true
IO.puts s.(1,2) # false
IO.puts s.(2,3) # false
IO.puts s.(2,4) # false
IO.puts s.(3,9) # false
IO.puts s.(15,16)   # false

Try it online on ElixirPlayground !

adrianmp

Posted 2016-07-21T16:11:20.220

Reputation: 1 592

0

Excel VBA, 14 Bytes

Anonymous VBE immediates window function that takes input of expected type variant\integer from cells [A1] and [A2] and outputs as a boolean variable to the VBE immedates window

?[A1]mod[A2]=0

Taylor Scott

Posted 2016-07-21T16:11:20.220

Reputation: 6 709

0

REXX, 18 bytes

arg n d
say n//d=0

idrougge

Posted 2016-07-21T16:11:20.220

Reputation: 641

0

Functoid, 21 bytes

Y(yg(KZ)(BBC+C-))$$;@

Full program expecting two arguments d and n, try it online!

Explanation

Y(              )      # fix point of the following function
  y                    # define recursive function with 2 arguments
   g                   #   - base case: x > y
    (KZ)               #   - in base case: check y == 0
        (BBC+C-)       #   - else: call f recursively with x and (y-x)
                 $$    # apply two command-line arguments
                   ;   # print as a boolean 
                    @  # terminate program

ბიმო

Posted 2016-07-21T16:11:20.220

Reputation: 15 345

0

T-SQL, 27 bytes

Per our input standards, input is provided via pre-existing table t, with integer fields n and d:

SELECT IIF(n%d=0,1,0)FROM t

'%' is the remainder/modulo operator in SQL.

Note that the original list of test values could be improved: the 5 failing cases all fail trivially because n < d. Some better test values (5 succeeding, 5 failing):

(200,50),(91,7),(999,3),(45,5),(10000,2),(45,10),(99,2),(100,98),(100,24),(100,51)

BradC

Posted 2016-07-21T16:11:20.220

Reputation: 6 099

0

Japt, 2 bytes

vV

Returns 1 for true, 0 for false.

Try it online!

Test cases

Oliver

Posted 2016-07-21T16:11:20.220

Reputation: 7 160

0

Common Lisp, 27 Bytes

(lambda(n d)(= 0(mod n d)))

Pretty basic.

Explanation:

(lambda(n d)(            ))     | Function of two arguments
             = 0(mod n d)       | Test if n mod d == 0

Bolce Bussiere

Posted 2016-07-21T16:11:20.220

Reputation: 970

0

W , 3 bytes

Sm!

Explanation

Sm!

With implicit input:

baSm!
baS   % Produce a,b
   m  % Produce a%b
    ! % Negate the value

user85052

Posted 2016-07-21T16:11:20.220

Reputation:

0

QBIC (Non-competing), 8 bytes

::?a%b=0

For this challenge, I've improved QBIC's user input of numeric values. : now takes a command line argument and casts this to num.

steenbergh

Posted 2016-07-21T16:11:20.220

Reputation: 7 772

0

q - 9 bytes

An anonymous lambda, returns boolean true/false

not(mod).

Example

q)not(mod). 18 4
0b
q)not(mod). 18 3
1b

skeevey

Posted 2016-07-21T16:11:20.220

Reputation: 4 139

What is the use of .? – Leaky Nun – 2016-07-23T12:04:45.603

. applys a function, passing a list as the parameters (e.g. as opposed to writing f[18;3] you can write f . 18 3) – skeevey – 2016-07-23T13:47:37.063

0

3d, 15 bytes

>::%v
;!T'_'F!;

Takes 2 numbers a and b as input, proceed a mod b, prints T if result is 0, F else. Simple and efficient.
Can be golfable, but since I'm still working on the aforelinked interpreter, I might not come back on it for improvement.
I'm just making a little advertising for my esolang ;)

joH1

Posted 2016-07-21T16:11:20.220

Reputation: 391

0

><>, 3 bytes

%n;

Input numbers are assumed to be on the stack. ><> does not have any default truthy or falsy values, so I use 0 as truthy and everything else as falsy. That seems to be allowed. (If not, 1-truthy, 0-falsy, can be done like this in 5 bytes: %0=n;).

SE - stop firing the good guys

Posted 2016-07-21T16:11:20.220

Reputation: 529

2ockquote>

<> does have the conditional ?, so in this sense zero should be falsy and everything else should be truthy I think, since the next instruction is only executed if nonzero. Also, I'm not quite sure about assuming input is on the stack for full programs, but I can't seem to find a relevant meta post... (usually for ><> the -v flag is used for +3 bytes)

– Sp3000 – 2016-07-25T11:00:07.150

@Sp3000 It takes some time getting used to what things you are allowed to exploit. A low byte count is almost impossible without. – SE - stop firing the good guys – 2016-07-25T11:21:23.337

In my opinion, since the questions asks for a program or function, I would allow getting parameters from the stack. However, if going that way, I would also have avoided the use of n and ; : once my function run, I would expect it to "return" to any other piece of code it would be included in, leaving its result on the stack. However, I agree that 0 in ><> is the boolean false, while every other number is a valid representation of the boolean true. Personally, I would have answered with %0= – Aaron – 2016-10-04T09:15:32.337

0

Magma, 13 bytes

IsDivisibleBy

Pretty readable, I think. Try it at the online calculator, e.g.

IsDivisibleBy(100, 50);
IsDivisibleBy(100, 54);

gives

true
false

Sp3000

Posted 2016-07-21T16:11:20.220

Reputation: 58 729

0

MIXAL, 105 bytes

Not counting bytes for 17 and 8 in the first two lines, which are used for input. Replace with any desired n and d.

Outputs 0 for true and 1 for false.

N       EQU     17
D       EQU     8
S       LDX     =N=
        DIV     =D=
        ENTA    30
        JXZ     T
        INCA    1
T       STA     9
        OUT     9(19)
        HLT
        END     S

Commented version:

N       EQU     17      Constants used for input                                                                                                                                               
D       EQU     8
START   LDX     =N=     Put value 'n' into rX                                                                                                                                                  
        DIV     =D=     Divide rAX by value 'd'; rA <= quotient; rX <= remainder                                                                                                               
        ENTA    30      Replace rA value with character code for '0'                                                                                                                           
        JXZ     T       If rX == 0, then d is a divisor of n, go to 'T'                                                                                                                        
        INCA    1       Else (there is a remainder), add 1 to rA charcode for '1'                                                                                                              
T       STA     9       Store rA charcode at address 9 (after end of program)                                                                                                                  
        OUT     9(19)   Send contents starting at address 9 to TTY output device                                                                                                               
        HLT
        END     START

musarithmia

Posted 2016-07-21T16:11:20.220

Reputation: 531

0

RProgN, 3 Bytes

% !

Explination

%   # Take the Modulus of the value under the top of the stack compared to the top of the stack. (The Inputs in order, conveniently enough)
!   # Push the Boolean not of it. In this case, 0 is falsey, and all numbers !=0 are truthy, so false correctly inverts it.

Yay, RProgN is a competitive language!

ATaco

Posted 2016-07-21T16:11:20.220

Reputation: 7 898

0

Perl 6, 4 bytes

*%%*

Anonymous function that takes 2 arguments, here represented with *, using the infix "is divisable by" operator %%, which returns a Bool value

Joshua

Posted 2016-07-21T16:11:20.220

Reputation: 261

0

tinylisp (REPL), 38 bytes

(d |(q((N D)(i(l N D)(e N 0)(|(s N D)D

Defines a function | that takes N and D and returns 1 if divisible, 0 otherwise. The REPL infers closing parentheses as necessary at the end of the code. Call the function like (| 22 2).

Ungolfed/explanation:

(d |                  Define | to be...
 (q (                 a function, i.e. a list containing...
  (N D)               list of params N and D, and function body:
  (i (l N D)           If N is less than D, then return:
   (e N 0)              1 if N equals 0, 0 otherwise;
   (| (s N D) D)))))    Else, recurse with arguments N - D and D

Gets kinda slow for N around D * 10^5 and larger.

DLosc

Posted 2016-07-21T16:11:20.220

Reputation: 21 213

0

PHP, 53 Bytes

Trying to get the boutny for an exemplary answer

$r=range($d=$argv[2],$n=$argv[1],$d);echo$n==end($r);

My answer based on Set Theory In the set from d to n where all items are multiple from d if n is the last member of the set it is divisible by d

Expressed differently you could say that the count of the items multiplied with d must be n

$r=range($d=$argv[2],$n=$argv[1],$d);echo$n==count($r)*$d;

Jörg Hülsermann

Posted 2016-07-21T16:11:20.220

Reputation: 13 026

0

Racket 26 bytes

(λ(n m)(= 0(modulo n m)))

Usage:

(define f
  (λ(n m)
    (= 0
       (modulo n m))))

Testing:

(f 1 1)
(f 2 1)
(f 6 3)
(f 17 17)
(f 22 2)
(f 1 2)
(f 2 3)
(f 2 4)
(f 3 9)
(f 15 16)

Output:

#t
#t
#t
#t
#t
#f
#f
#f
#f
#f

rnso

Posted 2016-07-21T16:11:20.220

Reputation: 1 635

0

TI-Basic, 10 bytes

Prompt N,D:not(fPart(N,D

Returns 1 for true or 0 for false

Timtech

Posted 2016-07-21T16:11:20.220

Reputation: 12 038

0

GameMaker Language, 32 bytes

return 1>argument0 mod argument1

Timtech

Posted 2016-07-21T16:11:20.220

Reputation: 12 038

0

Bash, 13 bytes

echo $[$1%$2]

The positive integers n and d are given as command line arguments in that order. The script outputs 0 (success) if n is evenly divisible by d, or a positive integer otherwise (failure).

seshoumara

Posted 2016-07-21T16:11:20.220

Reputation: 2 878

0

bc, 19 bytes

!read()%read()
quit

The positive integers n and d are read from STDIN in that order, separated by any whitespace. The script prints 1 if n is evenly divisible by d, or 0 otherwise.

Run examples:

me@LCARS:/PPCG$ bc --quiet divisibility_test.bc
12 4
1
me@LCARS:/PPCG$ bc --quiet divisibility_test.bc
12 5
0

seshoumara

Posted 2016-07-21T16:11:20.220

Reputation: 2 878

0

AWK, 14 bytes

{$0=!($1%$2)}1

Usage:

awk '{$0=!($1%$2)}1' <<< "N D"

Output will be 1 for true and 0 for false. N and D can be integers or floating point numbers.

Robert Benson

Posted 2016-07-21T16:11:20.220

Reputation: 1 339

-2

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication181
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter the Maximum Range of the Array:");
            int N = Convert.ToInt32(Console.ReadLine());
            int[] div = new int[N];
            int[] num = new int[N];
            int[] quo = new int[N];
            int d = 0, n = 0, q = 0;
            Console.WriteLine("\n");
            Console.WriteLine("Enter the numbers:");
            for (n = 0; n < N; n++)
            {
                num[n] = Convert.ToInt32(Console.ReadLine());
            }
            Console.WriteLine("\n");
            Console.WriteLine("Enter the Divident values:");
            for (d = 0; d < N; d++)
            {
                div[d] = Convert.ToInt32(Console.ReadLine());
            }
            Console.WriteLine("\n");
            for (d = 0; d < N; d++)
            {
                for (n = 0; n < N; n++)
                {
                    if (d == n)
                    {
                        quo[q] = (num[n] / div[d]);
                        q++;
                    }
                }
            }
            Console.WriteLine("\n");
            Console.WriteLine("The Quotient values are:");
            for (q = 0; q < N; q++)
            {
                Console.Write("{0} ", quo[q]);
            }
            Console.WriteLine("\n");
            Console.WriteLine("d      n    output");
            for (d = 0; d < N; d++)
            {
                for (n = 0; n < N; n++)
                {
                    for (q = 0; q < N; q++)
                    {
                        if ((d == n)&&(n == q)&&(q==d))
                        {
                            if ((quo[d] * div[d]) == num[n])
                            {
                                Console.WriteLine("{0}      {1}    truthy", div[d], num[n]);
                            }
                            else
                            {
                                Console.WriteLine("{0}      {1}    False ",div[d],num[n]);
                            }
                        }
                    }
                }
            }
            Console.WriteLine("\n");
            Console.ReadLine();
        }
    }
}

Thiru Arasu

Posted 2016-07-21T16:11:20.220

Reputation: 99

3This is a code golf challenge you know? Where you're trying to get the lowest amount of bytes possible? – Blue – 2016-10-12T11:41:39.583

2Answers must attempt to lower their byte count to be considered a serious answer for code-golf. Essentially, make your code as small as possible, while still having it be able to run. – mbomb007 – 2016-10-12T13:31:29.117

-3

TCC, 1 byte (Non-competing)

v

Input is 2 numbers seperated by a space

Try it online!

brianush1

Posted 2016-07-21T16:11:20.220

Reputation: 300

2This does not work with the tcc.lua file with timestamp 16-07-26 12:46 UTC, which didn't have the v command. If your answer requires a version of the language that postdates the challenge, you must label it as non-competing in the header. I'll remove my downvote when you do. – Dennis – 2016-07-26T17:07:48.133

@Dennis If you still have the downvote in, you can remove it. The post is edited. Also, you can delete the comments afterwards. – Erik the Outgolfer – 2016-10-06T15:27:31.967