判断2..100以内的质数--sqrt

简介: 判断2..100以内的质数--sqrt

一个判断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 = 2
while 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之后就不会有了。
目录
相关文章
|
28天前
|
人工智能 算法 C语言
编写函数isprime(int a),用来判断自变量a是否为素数,若是素数,函数返回整数1,否则返回0
通过上述代码和解释,我们实现了一个高效判断素数的C语言函数 `isprime`。该函数结合了基础判断和优化的循环逻辑,确保高效准确地判断给定整数是否为素数。希望本文能帮助你更好地理解和实现素数判断算法。
30 1
|
2月前
判断一个素数能被几个9整除
【10月更文挑战第10天】判断一个素数能被几个9整除。
41 2
|
7月前
pow() 函数:返回一个数的指定次幂
pow() 函数:返回一个数的指定次幂
46 1
|
7月前
分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数
分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数
70 0
|
7月前
|
Python
素数(prime number)又称质数,有无限个。除了1和
素数(prime number)又称质数,有无限个。除了1和
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
108 0
判断是否是质数
判断是否是质数
73 0
|
Java 测试技术 C++
LeetCode 69. Sqrt(x)--(数组)--二分法查找 --简单
Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a non-negative integer. Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.
133 0
LeetCode 69. Sqrt(x)--(数组)--二分法查找 --简单
打印出100-200之间素数及总个数(用math函数)
打印出100-200之间素数及总个数(用math函数)
123 0
打印出100-200之间素数及总个数(用math函数)
分解质因数---输出一个数的所有质数因子
分解质因数---输出一个数的所有质数因子
153 0

热门文章

最新文章