ruby 学习笔记(1) 初识语法

单从技术而言,ruby本身确实很爽,令程序员的工作变得轻松有趣!
下面的代码演示了如何找出100以内的素数:


代码如下:

using System;
namespace Mersenne
{
class Program
{
static void Main(string[] args)
{
for (int i = 2; i < 50; i++)
{
if (CheckDigital(i))
{
Console.WriteLine("{0} ",i);
}
}
Console.ReadLine();
}
static bool CheckDigital(int i)
{
if (i <= 1) { return false; }
if (i == 2) { return true; }
bool _result = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
_result = false;
break;
}
}
return _result;
}
}
}

参照这个思路,翻译成ruby版:


代码如下:

for i in 2..100
flag = true;
for j in 2...i
if i % j==0
flag = false;
break;
end
end
if flag
print i,"\n"
end
end

利用ruby语法的灵活性,可以精简成以下代码:


代码如下:

for i in 2..100
flag = true;
(2...i).each{|n| flag=false if i % n ==0}
print i,"\n" if flag
end

也可以写成这样


代码如下:

def checkNum?(num)
return true if num==2
f = true;
for j in 2...num
if num % j==0
f = false;
break
end
end
return f
end

(2..50).each{|x| print x,"\n" if checkNum?(x)}
另外一种实现:


代码如下:

$arr=[] #定义一个全局数组,用来保存计算结果
$arr[0] = 2
#定义方法,将n以内的奇素数加入$arr (素数同时肯定奇数,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(',') #输出结果

作者:菩提树下的杨过

(0)

相关推荐

  • Ruby编程中的语法使用风格推荐

    使用 :: 引用常量(包括类和模块)和构造器 (比如 Array() 或者 Nokogiri::HTML()).     永远不要使用 :: 来调用方法. # bad SomeClass::some_method some_object::some_method # good SomeClass.some_method some_object.some_method SomeModule::SomeClass::SOME_CONST SomeModule::SomeClass() 使用括号将de

  • Ruby基础语法初探

    创建字符串对象有多种途径,最常用的可能是使用字符串字面量(literals),即一组单引号或双引号之间的字符序列.这两种形式的区别在于,当构造字面量时,Ruby对字符串所做处理的多少有所不同.Ruby对单引号串处理得很少.除了极少的一些例外.键入到字符串字面量的内容就构成了这个字符串的值. Ruby对双引号字符串有更多的处理.首先,它寻找以反斜线开始的序列,并用二进制值替换它们.其中最常见的是\n,它会被回车换行符替换掉.当一个包含回车换行符的字符串输出时,\n会强制换行. puts "And

  • Ruby的基本语法学习总结

    1.关键字 关键字不能用于定义变量或者常量,module,class,def , undef,defined?,if ,then,else,elsif,case ,when,unless,for,in,while ,until,next,break,do,redo ,retry,yield,not,and,or,true,false,nil,rescue,ensure,super,self,begin,end,BEGIN,END,__FILE__, __LINE__,return,alias 2

  • ruby声明式语法的实现例子

    在ActiveRecord可以用很方便的声明方式来定义model之间的关联关系,例如: 复制代码 代码如下: class Topic < ActiveRecord::Base   has_many :posts   belongs_to :user end has_many和belongs_to其实是Topic类的class method,标准写法是: 复制代码 代码如下: class Topic < ActiveRecord::Base   Topic.has_many(:posts)  

  • Ruby的语法和语言特性总结

    Ruby是一种解释型.面向对象.动态类型的语言.Ruby采取的策略是在灵活性和运行时安全之间寻找平衡点.随着Rails框架的出现,Ruby也在2006年前后一鸣惊人,同时也指引人们重新找回编程乐趣.尽管从执行速度上说,Ruby谈不上有多高效,但它却能让程序员的编程效率大幅提高.本文将讲述Ruby语言的基础语言特性,包括基本的语法及代码块和类的定义. 1. 基础 在Ruby交互命令行中输入以下命令(>>为命令行提示符,=>为返回值:下文将把=>符号和语句写在一行内表明其返回值): &

  • Ruby的基础语法入门学习教程

    让我们编写一个简单的 Ruby 程序.所有的 Ruby 文件扩展名都是 .rb.所以,把下面的源代码放在 test.rb 文件中. 实例 #!/usr/bin/ruby -w puts "Hello, Ruby!"; 在这里,假设您的 /usr/bin 目录下已经有可用的 Ruby 解释器.现在,尝试运行这个程序,如下所示: $ ruby test.rb 这将会产生下面的结果: Hello, Ruby! 您已经看到了一个简单的 Ruby 程序,现在让我们看看一些 Ruby 语法相关的基

  • Ruby语法笔记

    接受用户输入 first_name = gets.chomp 首字母大写 first_name.capitalize! 字母变大写 first_name.upcase! 字母变小写 first_name.downcase! 多行输出 print <<EOF # 多行输出 EOF 注释 # 我是注释 变量获取 #{first_name} 变量 全局变量 $ 类变量 @@ 方法变量 @ 局部变量 小写字母或_ if/else if a < b puts '1' elsif b < a

  • Ruby中一些基本语法知识点的罗列汇总

    让我们写一个简单的ruby程序.所有Ruby源文件将以扩展名.rb.因此,把下面的源代码在一个test.rb文件. #!/usr/bin/ruby -w puts "Hello, Ruby!"; 在这里,假定您已经安装有Ruby解释器,可以在/usr/bin目录找到.现在尝试运行此程序如下: $ ruby test.rb 这将产生以下结果: Hello, Ruby! 通过以上实例,我们已经看到了一个简单的Ruby程序,现在让我们来看看有关Ruby语法的几个基本概念: Ruby程序中的空

  • ruby 学习笔记(1) 初识语法

    单从技术而言,ruby本身确实很爽,令程序员的工作变得轻松有趣! 下面的代码演示了如何找出100以内的素数: 复制代码 代码如下: using System; namespace Mersenne { class Program { static void Main(string[] args) { for (int i = 2; i < 50; i++) { if (CheckDigital(i)) { Console.WriteLine("{0} ",i); } } Cons

  • bootstrap学习笔记之初识bootstrap

    Bootstrap是一款目前非常流行的前端框架,简单的说,就是html,css,javascript的工具集,我们可以用bootstrap搭建出简洁,清新的网站或软件界面,有了bootstrap这个利器后台开发人员再也不用发愁前台界面的搭建了. bootstrap是一Twitter推出的一个开源的用于前端开发的工具包,是一个CSS/HTML框架.bootstrap提供了优雅的html和css规范,它即是由动态css语言Less写成.是Github上的热门开源项目. 它基于jQuery框架开发,在

  • JavaScript高级程序设计(第3版)学习笔记6 初识js对象

    在房子里面可以放你想放的任意事物--如果你有足够的美学造诣,你甚至可以弄一个房中房试试--当然,为了方便管理,我们会给房子里存放的所有事物都会取上一个不重复的名字,比如医药房间里的各种药品名称.在ECMAScript中,你可以在对象中存放任意你想放的数据,同样,我们需要给存放的数据取一个名字--也就是对象的属性名,再存放各种数据.再看看ECMA-262中对象的定义:无序属性的集合,其属性可以包含简单数据类型值.对象或者函数. 进入对象,我开始有些激动了,说实话,让我想起做这系列学习笔记的最初原因

  • ruby 学习笔记(2) 类的基本使用

    ruby语言跟c#的一些重要差别在于: 1.ruby是动态语言,c#是静态语言--即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此) 2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/方法都不需要声明具体(返回)类型,但其实在ruby内部,会自动根据变量的值分配类型.(可以通过 "puts 变量.class"查看) 3.ruby相对c#来讲,可能有些雷的地方在于:父类中的private成员,居然是可以在子类中使用的! ...其

  • Ruby学习笔记一

    笔记: Ruby会默认返回方法中的最后一个值. 如果需要返回多个值,可以用数组来实现. 可以通过强制声明return来返回值. 基础的输出方法是用puts(输出一行),print(直接打印). 基础的输入方法是gets(读入一行,包含行尾的'\n',可以用chomp方法消除). 纯粹的现象对象语言,而且还是一个动态语言(虽然今天目前还没用到),所以老老实实面向对象去. 有两种简单粗暴的储存多个元素的方法.数组[]和哈希表{},而且还有各种各样的函数. 强烈推荐新手入门在线学习网站: http:/

  • Ruby学习笔记之gem 命令详解

    ruby -v #查看ruby 版本 ruby -e ''require"watir"; puts Watir::IE::VERSION'' #查看watir版本 rvm list known #列出已知的ruby版本 rvm install 1.9.3 rvm use 1.9.3 | rvm use system rvm use 1.9.3 --default rvm list #列出本地ruby版本 rvm remove 1.9.2 具体详情见RVM实用指南  https://ru

  • JSP学习笔记之基础语法

    jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. jsp指令 page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令 include指令:将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句 taglib指令:使用标签库定义新的自定义标签,在jsp页面中启动自定行为 page指令语法 <%@page 属性1="属性值" 属性2="属性值1,属性值2" 属性n="属性值n"

  • Extjs学习笔记之一 初识Extjs之MessageBox

    在其中新建一个my目录,以后所有的样例文件都新建在这个目录中.1.Hello world! 先看一个Extjs版的Hello World网页的全部代码: 复制代码 代码如下: <html> <head> <title>Extjs MessageBox</title> <link rel="Stylesheet" type="text/css" href="../resources/css/ext-all

  • JavaScript学习笔记之基础语法

    JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.switch语句: for循环.while循环.do while循环: 标签.break.continue: try catch throw语句. 可以查看文后的参考链接. 后面的内容都是JavaScript中不同的部分. 本文先说上面内容中的几个细节不同. 1.全等判断 JavaScript的比较运算符中有一个全等判断===,是用来判断值

  • Ruby学习笔记二帮助生成Vim添加代码头的代码

    脚本语言真是太强了. 我的目的是把我的默认代码头功能加到Vim里面. /****************************************************************************** * COPYRIGHT NOTICE * Copyright (c) 2014 All rights reserved * ----Stay Hungry Stay Foolish---- * * @author : Shen * @name : * @file : G

随机推荐