单从技术而言,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(',') #输出结果
作者:菩提树下的杨过
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
循序渐进掌握递归正则表达式
一般来说,递归的正则表达式用来匹配任意嵌套层次的结构或左右对称的结构。例如匹配: 递归正则在正则表达式里算是比较灵活的部分,换句话说就是可能会比较难...
[阅读全文]
-
scrapy 使用
启动方式: 写一个启动文件,与配置文件同级 from scrapy.cmdline import execute import sys,os sys...
[阅读全文]
-
-
-
经典例题
例题: 1.用户输入账号 2.用户输入密码 3.判断用户的账号是不是alex 4.如果账号是alex在继续判断密码是不是alexdsb 5.账号和密...
[阅读全文]
-
-
-
-
-
网友评论