判断2..100以内的质数--sqrt
来源:互联网 发布:王奕霏编程 编辑:程序博客网 时间:2024/05/22 02:22
一个判断2..100以内的质数算法引起的几点疑惑。
先看算法:
【使用while-1-plsql】declare v_i number(3) := 2;v_j number(3) :=2;v_flag number(1) := 1;begin while v_i <= 100 loop while v_j <= sqrt(v_i) loop if mod(v_i,v_j) = 0 then v_flag := 0; end if; v_j := v_j +1; end loop; if v_flag = 1 then dbms_output.put_line(v_i); end if; v_j := 2; v_i := v_i+1; v_flag := 1;end loop;end;
【使用while-2-python】i = 2while i < 100: j = 2 while j <= (i/j): if not(i%j): break j += 1 if (j > i/j) : print(i, " 是素数") i += 1
【使用for】declare v_flag number(1) := 1;begin for c in 2..100 loop for d in 2..sqrt(c) loop if mod(c,d) = 0 then v_flag := 0; goto label;//跳到label标签处,相当于跳出循环 end if; end loop; <<label>> if v_flag = 1 then dbms_output.put_line(c); end if; v_flag := 1; end loop;end;
说明一下内层循环为什么以sqrt(i)为分界点:
首先,约数是成对出现的。比如24,你找到个约数3,那么一定有个约数8,因为24/3=8。然后,这对约数必须一个在根号n之前,一个在根号n之后。因为都在根号n之前的话,乘积一定小于n(根号nX根号n=n)。同样,都在根号n之后的话,乘积一定大于n。所以,如果你在根号n之前都找不到约数的话,那么根号n之后就不会有了。
0 0
- 判断2..100以内的质数--sqrt
- 100以内的质数及100以内质数的和
- 求100以内的质数
- 列出100以内的质数
- 巧记100以内的质数
- 求100以内的质数
- 求100以内的质数
- 高效的求取100以内的质数
- 输出1-100 以内的质数
- 输出1-100 以内的质数Quality3
- C语言打印100以内的质数
- 查找100以内的质数C;
- 求100以内的所有质数
- 1~100以内的质数和
- java + 100以内的素数(质数)
- C#求100以内的质数
- 找100-200以内的质数
- python实现100以内的质数和非质数
- 树状数组+离散化求逆序数poj2299Ultra-QuickSort
- 11
- Android启动模式
- DB2 mainframe support UNICODE
- 【codeforces 732D】【二分+贪心】
- 判断2..100以内的质数--sqrt
- 死锁剖析
- android studio使用Aidl跨进程调用服务
- 微信网页小游戏开发实践——走过的坑
- Java面向对象7——toString和equals
- Android应用将"清除数据"项变为"管理空间",自定义数据清除
- Uva11997 K Smallest Sums
- DSNTIAUL UNLOAD DB2 TABLE INTO DATASET
- Android 差量更新实践