下面代码演示了如何找出100以内素数:
复制代码 代码如下:
using ;
Mersenne
{
Program
{
void Main( args)
{
for ( i = 2; i < 50; i)
{
(CheckDigital(i))
{
Console.WriteLine("{0} ",i);
}
}
Console.ReadLine;
}
bool CheckDigital( i)
{
(i <= 1) { false; }
(i 2) { true; }
bool _result = true;
for ( j = 2; j < i; j)
{
(i % j 0)
{
_result = false;
;
}
}
_result;
}
}
}
参照这个思路翻译成ruby版:
复制代码 代码如下:
for i in 2..100
flag = true;
for j in 2...i
i % j0
flag = false;
;
end
end
flag
pr i,"\n"
end
end
利用ruby语法灵活性可以精简成以下代码:
复制代码 代码如下:
for i in 2..100
flag = true;
(2...i).each{|n| flag=false i % n 0}
pr i,"\n" flag
end
也可以写成这样
复制代码 代码如下:
def checkNum?(num)
true num2
f = true;
for j in 2...num
num % j0
f = false;
end
end
f
end
(2..50).each{|x| pr x,"\n" checkNum?(x)}
另外种实现:
复制代码 代码如下:
$arr= #定义个全局用来保存计算结果
$arr[0] = 2
#定义思路方法将n以内奇素数加入$arr (素数同时肯定奇数,2除外)
def add_prime(n)
3.step(n,2){|num| $arr<<num is_prime? num}
end
#定义思路方法 判断是否为素数
def is_prime?(number)
j=0
while $arr[j] * $arr[j] <=number
false number % $arr[j] 0
j 1
end
true
end
add_prime(50); #
puts $arr.join(',') #输出结果
作者:菩提树下杨过
最新评论