zoukankan      html  css  js  c++  java
  • ruby学习笔记(1)初识语法

    虽然ruby/ruby on rails从2007年就一直获奖无数,但身为一个中国人,一直对小日本创造的东西不怎么感兴趣,想想其实也没必要,技术本身是无国界的,日本其实也有值得学习的地方(扯远了,呵)

    单从技术而言,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(',') #输出结果
     
    
    
    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    为什么你投十份简历,只有一两家公司约你?又或者为什么你每投一份简历都能获得面试机会?
    JAVA程序1,1,2,3,5,8,13,21....第30个是什么...?
    1-2+3-4+5-6+7......+n的几种实现
    分层应用——如何实现登录?
    初识三层
    VB.NET视频总结——后续篇
    操作系统小结
    VB.NET视频总结——基础篇
    台湾与大陆的计算机术语翻译差异
    VB.NET概述
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1666795.html
Copyright © 2011-2022 走看看