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(',') #输出结果
作者:菩提树下的杨过
相关推荐
PMJ0 2020-10-13
longzhiwen 2020-09-06
yangxingstar 2020-08-31
LUCIEN0 2020-08-17
huangzihao00 2020-08-17
Jan 2020-08-17
AndesStay 2020-06-12
afengxg 2020-06-09
zamesking 2020-06-09
afengxg 2020-06-09
何志文 2020-06-09
teresalxm 2020-06-05
何志文 2020-05-16
何志文 2020-05-11
fsl 2020-05-04
JOO 2020-04-26
倩 2020-04-22
afanti 2020-04-19
始终不够 2020-04-10