这道题 输入 nn 个不大于 105105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 第一行输入一个正整数 nn,表示整数个数。 第二行输入 nn 个正整数 aiai,以空格隔开。 输出格式 输出一行,依次输出 aiai 中剩余的质数,以空格隔开。 我的代码为什么错了一个#include<bits/stdc++.h> using namespace std; bool zs(int c) { bool a=1; for(int i=2;i<=sqrt(c);i++) { if(c%i==0) a=0; } return a; } int main() { int a[100001],b; scanf("%d",&b); for(int i=0;i<b;i++) { scanf("%d",&a[i]); int c=a[i]; if(zs(c)) printf("%d ",a[i]); } return 0; }
时间: 2024-01-07 14:03:54 浏览: 35
你的代码中,只输出了质数,但是没有去除非质数的数字。你需要在输入数字的同时,进行判断是否为质数,并将质数存入数组中,最后再输出数组中的质数。可以参考下面的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool is_prime(int x) {
if (x < 2) return false;
for (int i = 2; i <= sqrt(x); i++) {
if (x % i == 0) return false;
}
return true;
}
int main() {
int n;
cin >> n;
int a[n], cnt = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
if (is_prime(a[i])) {
cnt++;
}
}
for (int i = 0; i < n; i++) {
if (is_prime(a[i])) {
cout << a[i] << " ";
}
}
return 0;
}
```
相关问题
给定一个正整数 NN,请你输出 NN 以内(不包含 NN)的质数以及质数的个数。python
代码如下:
```python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
n = int(input("请输入一个正整数: "))
count = 0
for i in range(2, n):
if is_prime(i):
count += 1
print(i, end=" ")
print("\n质数的个数为:", count)
```
解释:
首先定义一个函数 `is_prime`,用于判断一个正整数是否为质数。如果 n 小于等于 1,则不是质数;如果 n 大于 1,就从 2 开始循环到 n 的平方根(包括平方根),判断 n 是否能被循环中的数整除。如果能整除,说明 n 不是质数,返回 False,否则返回 True。
然后输入一个正整数 n,定义一个计数器 count,从 2 开始循环到 n-1(不包括 n),判断循环中的数是否为质数。如果是,计数器加 1,并输出该数。最后输出质数的个数。
注意,这里用 `end=" "` 将输出的数用空格分隔开,方便观察。
给定一个正整数 NN,请你输出 NN 以内(不包含 NN)的质数以及质数的个数。
以下是 Python 代码:
```python
def count_primes(n):
if n < 2:
return 0
primes = [True] * n
primes[0] = primes[1] = False
for i in range(2, int(n ** 0.5) + 1):
if primes[i]:
primes[i * i: n: i] = [False] * len(primes[i * i: n: i])
return sum(primes), [i for i in range(n) if primes[i]]
n = int(input())
count, primes = count_primes(n)
print(count)
print(*primes)
```
首先,定义一个函数 `count_primes(n)`,输入正整数 n,输出 n 以内的质数个数以及质数列表。这个函数使用了埃氏筛法,具体实现方法可以参考这篇博客:[埃氏筛法求素数](https://www.cnblogs.com/ECJTUACM-873284962/p/7654269.html)。
然后,读入正整数 n,调用 `count_primes(n)`,输出质数个数以及质数列表。其中,使用了 `print(*primes)` 将质数列表打散为多个参数输出。