Ruby测试小代码[计算50以内的素数]

算法思想

判断某一个数,能不能被比他平方根小的素数整除。

首先看看代码

$arr = []
$arr[0] = 2
def add_prime(n)
    3.step(n,2){|num| $arr <<num if is_prime?num }
end

def is_prime?(number)
    j=0
    while $arr[j]*$arr[j]<=number
        return false if number % $arr[j] == 0
        j += 1
    end
    return true
end
add_prime(50)
puts $arr.join(","),"\n"

分析一下

  • 关于变量:$xxx是创建全局变量
  • 3.step(n,2){}:就是从3开始,每次加2得到的数,比如1.step(10, 2) { |i| print i," " } 结果就是 1 3 5 7 9
  • ruby if判断的时候,比较另类, action if condition,所以return false if number % $arr[j] == 0的意思是 如果对$arr[j]取余为零,则返回false
  • 输出的时候,","起到连接符的作用,"aaa","bbb"其实就是aaabbb
  • 输出可以用puts或者print,puts就是比print多了自动回车而已

本文转自博客园xingoo的博客,原文链接:Ruby测试小代码[计算50以内的素数],如需转载请自行联系原博主。

时间: 2024-10-09 18:17:35

Ruby测试小代码[计算50以内的素数]的相关文章

Ruby、PHP、Shell实现求50以内的素数_ruby专题

ruby求50之内的素数的方法,感觉对比PHP和SHELL方法是最简单的,但SHELL中可以利用factor命令,而PHP中没有求素数的对应函数的,需要自己设计算法,三种方式大家对比学习下,应该还有更优更简单的方法的. 复制代码 代码如下: #encoding:utf-8 #求50以内的素数(注意数字中..与...的区别)   for i in 2..50 #1默认不为素数,所以从1-50范围内被排除     f=true #起始假定每个数都是素数     for p in 2...i #比自身

js-JS代码编写10以内的加法测试

问题描述 JS代码编写10以内的加法测试 请使用JS编写一个10以内的加法在线测试联系,要求如下 (1)加数和被加数是由getQusetion()随机产生 (2)点击确定按钮之后,程序调用"judge()",对测试者输入答案进行判断,若回答正确,程序告知"回答正确,正确率是n%":否则告知"回答错误,正确答案是:n",然后自动产生下一题.(注:n是程序计算的结果) var number1=0; var number2=0; var n=0; va

web前端开发JQuery常用实例代码片段(50个)_jquery

本文给大家展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助你又快又好地把事情完成.这些都是我尽量记住的有着最佳性能的代码段,因此如果你发现你任何可以做得更好的地方的话,欢迎把你的版本粘贴在评论中!我希望你在这一文章中能找到有帮助的东西. 1. 如何创建嵌套的过滤器 //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分.在这种情况下

简单cs结构-能不能帮我看一下下面两端小代码服务端怎么收不到数据啊?

问题描述 能不能帮我看一下下面两端小代码服务端怎么收不到数据啊? package chat; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; im

测试并发应用(九)MultithreadedTC测试并发代码

MultithreadedTC测试并发代码 MultithreadedTC 是一个 Java 库用来测试并发应用.它的主要目的是为了解决并发应用的不确定的问题.你不能控制他们的执行顺序.为了这个目睹,它包含了内部节拍器来控制应用的不同线程的执行顺序.这些测试线程作为类的方法来实现的. 在这个指南,你将学习如何使用 MultithreadedTC 库来为LinkedTransferQueue 实现一个测试. 准备 你必须从 http://code.google.com/p/ multithread

for循环-两个FOR循环嵌套的小代码,求运算过程

问题描述 两个FOR循环嵌套的小代码,求运算过程 public static void main (String args[]) { int i,j; first_loop; for(i=1;i<50;i++) { for(j=2;j<i;j++) if(i%j==0) continue first_loop: System.out.println(i): } } 解决方案 浅谈for循环嵌套的效率两个for循环的优缺点for循环中的if嵌套 解决方案二: 启用单步调试,一步一步慢慢看就行了~

如何测试RxJava代码

假设你已经阅读过RxJava的相关内容,也已经体验过像"RxJava入门之实例解析"中的那些示例,现在打算在自己的代码中探索一下响应式编程了.但是,现在却一直困扰着如何测试那些可能会在代码库中发现的新功能呢?下面我们将探索一下如何测试RxJava代码. 本文内容要点: RxJava含有内建的.测试友好的解决方案. 使用TestSubscriber去验证Observable. 使用TestScheduler可实现对时间的严格控制. Awaitility库提供了对测试环境进一步的控制. 使

高质量PHP代码的50个实用技巧必备(下)_php技巧

接着上篇<高质量PHP代码的50个实用技巧必备(上)>继续研究. 26. 避免直接写SQL, 抽象之 不厌其烦的写了太多如下的语句: <span style="color:#333333;font-family:''Helvetica, Arial, sans-serif'';">$query = "INSERT INTO users(name , email , address , phone) VALUES('$name' , '$email' ,

小代码编写神器:LINQPad 使用入门

原文:小代码编写神器:LINQPad 使用入门 一:概述 1:想查看程序运行结果,又不想启动 VS 怎么办? 2:想测试下自己的 C# 能力,不使用 VS 的智能感知,怎么办? 那么,我们有一个选择,使用神器  LINQPad(http://www.linqpad.net/).   二:入门 1:使用 C# Statement 直接在 1 处选择,然后在 2 处写 C# 代码,注意,语法中 Dump() 一下,就是在 3 处的结果窗口进行显示: 2:引入内.外部(第三方) DLL  以及 引用命