Ruby中求50之内的素数方法

简介:

ruby求50之内的素数的方法,感觉对比PHP和SHELL方法是最简单的,但SHELL中可以利用factor命令,而PHP中没有求素数的对应函数的,需要自己设计算法,三种方式大家对比学习下,应该还有更优更简单的方法的。

1
2
3
4
5
6
7
8
9
10
11
12
13
#encoding:utf-8
#求50以内的素数(注意数字中..与...的区别)
 
for  in  2 .. 50  #1默认不为素数,所以从1-50范围内被排除
     f= true  #起始假定每个数都是素数
     for  in  2 ...i  #比自身小的正整数(1和自身除外)
         if  i%p== 0  #如果能整除
             f= nil #那么这个数不是素数
             break  #并且跳出这层循环
         end  # if 结束
     end  #内层循环结束
     print i, " "  if  #如果这个数保持起始假定,则打印
end  #外层循环结束

PHP代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo  "以下程序会输出50以内的素数:" ;
for ($m=1;$m<=50;$m++){    // 第一层循环,循环1-50直接的所有数
     $k=0;                                  // 计数器初始化 
         for ($i=1;$i<=$m;$i++){         // 第二层循环,循环1-$m直接的所有数,$m<=$n
             if ($m%$i==0){              // 取模运算,如果余数为0,K自增1
             $k++;
             }
         }
     if ($k==2){                           // 如果k的值等于1或者2,那么是素数,将其输出
     echo  $m. " " ;
     }
}
?>

SHELL的方式略为简单些,代码如下:

1
2
3
4
5
6
#!/bin/bash
#factor是shell命令,可以求出后面所接数字中的所有素数。
for  in  {2..50}
do
     factor $i |  awk  -F  '[: ]'  '{if(NF == 3)  print $1}'
done







本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/1579176,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Ruby
|
2月前
|
Ruby
|
1月前
|
数据采集 Web App开发 数据处理
Ruby网络爬虫教程:从入门到精通下载图片
Ruby网络爬虫教程:从入门到精通下载图片
|
2月前
|
JSON 数据格式 Ruby
|
2月前
|
JSON Ubuntu Linux
|
2月前
|
存储 JSON 数据格式
|
2月前
|
安全 Ruby
|
2月前
|
调度 Ruby
|
2月前
|
人工智能 BI 计算机视觉