当前位置 博文首页 > ruby 学习笔记(1) 初识语法

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

    作者:admin 时间:2021-02-07 12:23

    单从技术而言,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(',') #输出结果

    作者:菩提树下的杨过

    js
    下一篇:没有了