输出从 2 到 N 的所有素数以及半素数,每输出一个换一行。输出最后一个后也换行
时间: 2024-10-07 19:02:19 浏览: 10
输出从2到N的所有素数(只能被1和自身整除的自然数)和半素数(即除了1和它本身以外,还能被其他不超过两个质因数整除的数),可以使用Python编写一个简单的程序来完成:
```python
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def is_semiprime(n):
factors = []
for i in range(2, n+1):
if is_prime(i):
while n % i == 0:
factors.append(i)
n //= i
if len(factors) > 2:
return False
return len(factors) <= 2 and n > 1
N = int(input("请输入一个正整数N:"))
for num in range(2, N+1):
if is_prime(num):
print(num, end="\n")
elif is_semiprime(num):
print(num, end="\n")
相关问题
输出从 2 到 N 的所有素数以及半素数,每输出一个换一行。输出最后一个后也换行 c++
在C++中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出2到N之间的所有素数,然后通过检查每个数的因子来确定是否是半素数。下面是一个简单的程序示例:
```cpp
#include <iostream>
#include <vector>
// 函数用于判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0)
return false;
}
return true;
}
// 函数用于判断一个数是否为半素数(阿姆斯特朗数)
bool isArmstrong(int num) {
int digits = std::to_string(num).size();
int sum = 0;
for (char digit : std::to_string(num)) {
sum += std::pow(std::stoi(digit), digits);
}
return sum == num;
}
// 主函数生成并输出素数和半素数
void printPrimesAndSemiprimes(int n) {
std::vector<bool> primeFlags(n+1, true); // 素数标志数组
primeFlags[0] = primeFlags[1] = false;
// 使用埃拉托斯特尼筛法找到素数
for (int i = 2; i * i <= n; ++i) {
if (primeFlags[i]) {
for (int j = i * i; j <= n; j += i) {
primeFlags[j] = false;
}
}
}
// 打印素数
for (int i = 2; i <= n; ++i) {
if (primeFlags[i])
std::cout << i << " ";
}
std::cout << "\n";
// 检查并打印半素数
for (int i = 2; i <= n; ++i) {
if (isPrime(i) && isArmstrong(i))
std::cout << i << "\n";
}
}
int main() {
int N;
std::cout << "请输入一个整数 N: ";
std::cin >> N;
printPrimesAndSemiprimes(N);
return 0;
}
```
输出1和n以内所有的素数,每个素数后有一个空格,输出十个素数后换行。
以下是Python代码实现:
```python
def is_prime(num):
"""判断一个数是否为素数"""
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
n = int(input("请输入一个正整数n: "))
count = 0
for i in range(1, n+1):
if is_prime(i):
count += 1
print(i, end=' ')
if count % 10 == 0:
print()
```
代码说明:
- `is_prime()` 函数用于判断一个数是否为素数。如果小于 2,则不是素数;如果大于等于 2,且在 2 到该数的平方根之间有一个可以整除它的数,则不是素数,否则就是素数。
- 输入一个正整数 n。
- 遍历 1 到 n 之间的每一个数,判断是否为素数。
- 如果是素数,则输出,并计数器加 1。
- 如果计数器是 10 的倍数,则输出一个换行符。