首页 > 解决方案 > Ruby - 帮助组合语法以查找素数并将非素数减少为大于 1 的最小除数

问题描述

我对此完全陌生,并试图自学 Ruby。有人给我一个问题,看看我能否拼凑出要做什么,并通过研究和坚定的决心证明解决问题的能力,所以请记住,我对 Ruby 知之甚少,我已经学习了一整天。

我需要首先确定一个整数是否为素数(据我所知,不使用所需的“素数”目录),然后,如果结果为真,我的输出需要为 1。如果为假,我的输出必须是大于一的最小除数。

把我在这里找到的东西和互联网上的其他各种网站拼凑在一起,我把我希望能起作用的东西拼凑在一起。它不是。

def isPrime(n)
  ( 2..Math.sqrt(n)).each { |i|
    if n % i == 0 && i < n
    else
      n.reduce { |smallest, current| break if n <= 2 }
      puts n
    end
  }
1

我不知道为什么它不起作用。我对 Ruby 的语法知之甚少,而且我有理由确定这就是我搞砸的地方。

找到素数确实有效;其余的(找到最小的除数)没有。而且我敢肯定,我用 1 替换 true 会严重破坏这一点。任何帮助或见解将不胜感激。我在编码方面的背景为零(除非你算上我妈妈在 80 年代在 COBOL 工作),所以无论如何都要像对一个傻瓜一样解释它,因为我是新人。

标签: ruby

解决方案


推荐阅读