7-9 判断素数 分数 10 作者 陈越 单位 浙江大学 本题的目标很简单,就是判断一个给定的正整数是否素数。 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2 31 的需要判断的正整数。 输出格式: 对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。 输入样例: 2 11 111 输出样例: Yes No 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB这段代码错在哪里:#include<iostream> #include<cmath> using namespace std; int main() { int N; cin>>N; int A[11]={0}; for(int i=0;i<N;i++) { int a; cin>>a; A[i]=a; } for(int i=0;i<N;i++) { bool flag=true; int n=A[i]; for(int j=2;j<=sqrt(n);j++) { if(n%j==0) { flag=false; break; } } if(flag)cout<<"Yes"<<endl; else cout<<"No"<<endl; }return 0; }
时间: 2024-04-11 10:27:34 浏览: 191
浙江大学数据结构课程(陈越)____数据结构作业
这段代码中有一个错误。在输入样例中,第一行是2,表示接下来有两个要判断的正整数。但在循环中,你将N赋值给了A[11],这是错误的。应该将A的大小设置为N,即int A[N]。修改后的代码如下:
```cpp
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int N;
cin >> N;
int A[N] = {0};
for(int i = 0; i < N; i++)
{
int a;
cin >> a;
A[i] = a;
}
for(int i = 0; i < N; i++)
{
bool flag = true;
int n = A[i];
for(int j = 2; j <= sqrt(n); j++)
{
if(n % j == 0)
{
flag = false;
break;
}
}
if(flag)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
```
希望对你有帮助!
阅读全文