找出1~10000之间的质数
时间: 2023-03-08 18:31:34 浏览: 145
斐波那契数列是一个数列,其中每个数字都是前两个数字的和。它的通项公式为:
F(n) = F(n-1) + F(n-2) (n ≥ 3,F(1) = 1,F(2) = 1)
下面是一个使用 C 语言实现斐波那契数列的程序示例:
```
#inclu
相关问题
plsql 找出2--10000的所有质数
PL/SQL 是 Oracle 数据库支持的一种过程化 SQL 语言,可以用来编写存储过程、函数和触发器等。要在 PL/SQL 中找出 2 到 10000 之间的所有质数,可以使用以下代码:
```sql
DECLARE
i NUMBER;
j NUMBER;
is_prime BOOLEAN;
BEGIN
FOR i IN 2..10000 LOOP
is_prime := TRUE;
FOR j IN 2..TRUNC(SQRT(i)) LOOP
IF i MOD j = 0 THEN
is_prime := FALSE;
EXIT;
END IF;
END LOOP;
IF is_prime AND i > 1 THEN
DBMS_OUTPUT.PUT_LINE(i);
END IF;
END LOOP;
END;
```
这段代码的逻辑是:
1. 遍历 2 到 10000 的每个数字 i。
2. 对于每个 i,假设它是质数(is_prime := TRUE)。
3. 内层循环检查从 2 到 sqrt(i) 的每个数字 j 是否能整除 i(i MOD j = 0)。
4. 如果找到一个 j 能整除 i,则 i 不是质数(is_prime := FALSE),跳出内层循环。
5. 如果内层循环完成后 is_prime 仍为 TRUE,则 i 是质数,输出该数。
Java,多线程求素数 使用10个线程求解10000以内的素数,每个线程负责1000范围:线程1负责找1~1000以内的素数,线程2负责找1001~2000以内的素数,……,线程10负责找9001~10000以内的素数。每个线程找到一个素数就马上将其打印出来。
下面是Java多线程求素数的代码实现:
```java
public class PrimeNumberThread extends Thread {
private final int start;
private final int end;
public PrimeNumberThread(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public void run() {
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
System.out.println(i);
}
}
}
private boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
public class Main {
public static void main(String[] args) {
int start = 1;
int end = 10000;
int range = 1000;
for (int i = 0; i < end / range; i++) {
int threadStart = start + i * range;
int threadEnd = threadStart + range - 1;
if (threadEnd > end) {
threadEnd = end;
}
PrimeNumberThread thread = new PrimeNumberThread(threadStart, threadEnd);
thread.start();
}
}
}
```
在主函数中,我们根据范围和总数计算出每个线程的起始和结束位置,并创建一个PrimeNumberThread对象来执行任务。PrimeNumberThread继承自Thread类,重写了run()方法,在run()方法中对指定范围内的每个数进行素数判断,并将素数打印出来。
注意,线程的数量可以根据需要调整,但是需要保证每个线程负责的范围不重叠,否则会出现重复计算的问题。