PLSQL计算质数
| 看到有人实现了一个计算质数的函数,就是效率有点差,贴一个以前写的计算质数的算法。
目标很简单,列出100以内的质数。 下面就是最常见的一种写法:(也是最差的一种) [PHP] SQL> SET SERVEROUT ON . 由于屏幕输出操作比较慢,为了避免影响,将屏幕输出关闭。并将数据量增大到100000,以下所有的测试都在这个相同条件下进行。 [PHP] SQL> DECLARE . 这种方法在100000数据量的用时居然达到了2个小时。 [PHP] SQL> DECLARE . 效果十分的明显,从2个多小时,缩减到了16秒。 [PHP] SQL> DECLARE . 仔细考虑一下,其实用来被整除的数是质数就足够了,不需要对所有奇数进行判断。在下面的过程中,使用索引表来保存计算得到的所有的质数: [PHP] SQL> DECLARE . 已经将速度提高到了6秒左右,还能不能更快呢?注意到在最内层循环中调用了一个函数POWER(I, 0.5),下面将这个表达式转换一下,避免使用这个函数: [PHP] SQL> DECLARE . 难以置信吧,一个执行两个小时的PL/SQL,通过算法的调整可以优化到了1秒。 [PHP] SQL> DECLARE . 由于从3开始步长为2,因此判断随后的质数的时候,没有必要用2去整除,而直接可以从3开始。 [PHP] SQL> DECLARE . [PHP] SQL> DECLARE . 再来一次尝试: [PHP] SQL> DECLARE . 看来Tom说的确实没有错,优化的方法总是存在的。 |
PLSQL计算质数的更多相关文章
- Eratosthenes筛选法计算质数
<C和指针>第6章第4道编程题: 质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法.这个算法的第一步就是写下所有从2至某个上限之间的所有整数.在算法的 ...
- oracle /plsql 计算平闰年天数函数
--计算平闰年天数函数 CREATE OR REPLACE FUNCTION f_ping_run_nian (i_year NUMBER --定义函数名 ) RETURN VARCHAR2 IS - ...
- .Net基础篇_学习笔记_第七天_计算质数(找出0-100以内说有质数)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 欧拉降幂,基本计算定理——cf615D
用基本算数定理求约数和的思想来计算, 首先用pi,ci来表示第i个质数,指数为i,然后对于每个pi,pi^2...都有指数为mul{(c_1+1)(c_2+1)(c_i-1+1)(c_i+1+1).. ...
- Android——Handler
Handler——是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,可以发送也可以处理消息 主要作用:1)在新启动的线程中发送消息:2)在主线程中获取.处理消息. (想想银行取钱 ...
- 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2371 Solved: 1143[Submit][Sta ...
- 《C与指针》第六章练习
本章问题 1.如果一个值的类型无法简单的通过观察它的位模式来判断,那么机器是如何知道应该怎样对这个值进行操纵的? answer:The machine doesn't make this determ ...
- 使用sysbench进行压力测试
sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.数据库目前支持MySQL/Oracle/PostgreSQL/Drizzle,它主要包括以下几 ...
- [转载]:Delphi xe7并行编程快速入门
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
随机推荐
- 日期类的加减及java中所以日期类的操作算法大全
1.计算某一月份的最大天数 1Calendar time=Calendar.getInstance();2time.clear();3time.set(Calendar.YEAR,year); //y ...
- Jersey Client Post Bean参数
代码: public static void main(String[] args) { Student st = new Student("Adriana", "Bar ...
- TransactionScope事务使用
using (System.Transactions.TransactionScope T_Scope = new System.Transactions.TransactionScope()) { ...
- EGOCache缓存框架详细讲解
EGOCache是一个轻量级的缓存框架.用法简单方便,在现在的项目中,我就用到EGOCache来缓存下载过的照片和字符串. 有人可能会问到,缓存照片还需要用EGOCache吗?AFNetworking ...
- npm安装和Vue运行
一.开始: 下载地址:http://nodejs.cn/download/ 下载安装: 直到 二.打开CMD,检查是否正常 在安装目录里新增两个文件夹 然后运行命令:如下图: npm config s ...
- ! [rejected] master -> master (non-fast-forward)
当向GitHub远程仓库提交请求时,常会出现 ! [rejected] master -> master (non-fast-forward) 错误. 出现这种错误通常是由于远程仓库的文件版 ...
- POI2014 RAJ-Rally
Description 给定一个\(N\)个点\(M\)条边的\(DAG(N,M\leq10^6)\),边权为\(1\).删去一个点,使剩余图中的最长路径最短,求删去的点和最长路径长度. Soluti ...
- “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- Qt使用gtest进行C++单元测试-01
环境: win7/win10+qt5.8.0(MinGW), 1.gtest获取: 从:https://www.bogotobogo.com/cplusplus/google_unit_test_gt ...
- [小tips]使用vscode,根据vue模板文件生成代码
本着苍蝇虽小也是肉的精神...... 目标: 我们希望每次新建.vue文件后,VSCODE能够根据配置,自动生成我们想要的内容. 方法: 打开VSCODE编辑器,依次选择"文件 -> ...