图形化编程求质数的方法如下:
使用质数筛法(埃氏筛法)
创建一个长度为n+1的布尔数组isPrime,用来标记是否是素数。初始时,将isPrime数组中的所有元素都置为true。
从2开始遍历到sqrt(n),对每个数i进行如下操作:如果isPrime[i]为true,则将i的所有倍数(除了i本身)都标记为false,因为它们肯定不是素数。
最后,遍历isPrime数组,将所有为true的索引值(即素数)输出即可。
```python
import math
def findPrimes(n):
isPrime = [True] * (n+1)
isPrime = isPrime = False
for i in range(2, int(math.sqrt(n))+1):
if isPrime[i]:
for j in range(i*i, n+1, i):
isPrime[j] = False
primes = [i for i in range(n+1) if isPrime[i]]
return primes
n = int(input("请输入一个正整数n:"))
primes = findPrimes(n)
print("小于等于", n, "的所有素数为:", primes)
```
使用Eratosthenes筛法
创建一个长度为n+1的布尔数组isPrime,用来标记是否是素数。初始时,将isPrime数组中的所有元素都置为true。
从2开始遍历到sqrt(n),对每个数i进行如下操作:如果isPrime[i]为true,则将i的所有倍数(除了i本身)都标记为false,因为它们肯定不是素数。
最后,遍历isPrime数组,将所有为true的索引值(即素数)输出即可。
```python
import math
def findPrimes(n):
isPrime = [True] * (n+1)
isPrime = isPrime = False
for i in range(2, int(math.sqrt(n))+1):
if isPrime[i]:
for j in range(i*i, n+1, i):
isPrime[j] = False
primes = [i for i in range(n+1) if isPrime[i]]
return primes
n = int(input("请输入一个正整数n:"))
primes = findPrimes(n)
print("小于等于", n, "的所有素数为:", primes)
```
通过以上两种方法,可以在图形化编程中实现求质数的功能。