前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ruby学习笔记(1)--初识语法

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

作者头像
菩提树下的杨过
发布2018-01-22 16:16:16
6140
发布2018-01-22 16:16:16
举报
文章被收录于专栏:菩提树下的杨过

虽然ruby/ruby on rails从2007年就一直获奖无数,但身为一个中国人,一直对小日本创造的东西不怎么感兴趣,想想其实也没必要,技术本身是无国界的,日本其实也有值得学习的地方(扯远了,呵) 单从技术而言,ruby本身确实很爽,令程序员的工作变得轻松有趣! 下面的代码演示了如何找出100以内的素数:

代码语言:javascript
复制
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版:

代码语言:javascript
复制
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语法的灵活性,可以精简成以下代码:

代码语言:javascript
复制
for i in 2..100        
    flag = true;
    (2...i).each{|n| flag=false if i % n ==0}
    print i,"\n" if flag         
end

也可以写成这样

代码语言:javascript
复制
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)}

另外一种实现:

代码语言:javascript
复制
$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(',') #输出结果
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-02-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档