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,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
Ruby 教程 之 Ruby 方法 2
Ruby return 语句
57 0
|
6月前
|
C语言 C++ Ruby
|
6月前
|
Ruby
Ruby 教程 之 Ruby 方法 3
可变数量的参数
61 1
|
1月前
|
应用服务中间件 Apache nginx
深入探索研究Ruby CGI方法
【10月更文挑战第2天】
31 4
|
2月前
|
应用服务中间件 Apache nginx
探索研究Ruby CGI方法
【9月更文挑战第2天】
44 4
|
3月前
|
开发者 测试技术 Android开发
Xamarin 开发者的五大常见问题及解决方案:从环境搭建到性能优化,全面解析高效跨平台应用开发的技巧与代码实例
【8月更文挑战第31天】Xamarin 开发者常遇问题及解决方案覆盖环境搭建至应用发布全流程,助新手克服技术难关。首先需正确安装配置 Visual Studio 及 Xamarin 支持,设置 iOS/Android 测试环境。利用 Xamarin.Forms 和 XAML 实现高效跨平台开发,共享 UI 和业务逻辑代码。针对性能优化,采取减少 UI 更新、缓存计算结果等措施,复杂问题则借助 Xamarin Profiler 分析。
45 0