`if(zs(a[i])==1) a[i]==0;` 改为 `if(zs(a[i])==1) a[i]=0;`
by int114514 @ 2020-09-18 20:31:13
懂了谢谢
by HP65068 @ 2020-09-18 20:35:28
@[HP65068](/user/369359)
有两个问题:
1. 判断 $n$ 是否为质数,应逐个验证**小于等于** $\sqrt{n}$ 的数是否为 $n$ 的因数
2. 赋值是 `=`,不是判断相等的 `==`
修改后代码如下:
``` cpp
#include<bits/stdc++.h>
using namespace std;
int zs(int a)
{
if(a==0||a==1) return 1;
if(a==2) return 0;
for(int i=2;i*i<=a;i++)
if(a%i==0) return 1;
return 0;
}
int main()
{
int a[101]={},n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(zs(a[i])==1) a[i]=0;
}
for(int i=1;i<=n;i++) if(a[i]!=0) cout<<a[i]<<" ";
return 0;
}
```
by wsyhb @ 2020-09-18 20:37:02