样例过,80分,求解

P5736 【深基7.例2】质数筛

@[wch666](/user/778382) 质数判断写挂了
by InversionShadow @ 2023-05-20 20:46:14


@[xingwuKling](/user/915253) 80分
by TooAmazing @ 2023-05-20 20:52:22


```c #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; bool isprime(int x){//判断是否素数 if(x<=1) return false;//如果小于2,一定不是素数 for(int i=2;i<=sqrt(x);i++){//为什么要到sqrt(x)呢,因为如果有一个大于sqrt(n)的数可以被n整除,那么必有一个数n/i也可以被n整除且小于i if(x%i==0) return false;//如果可以整除,那么不是素数 } return true;//是素数 } int main(){ int n,a; cin>>n; for(int i=1;i<=n;i++){ cin>>a; if(isprime(a)){ cout<<a<<" ";//是素数,就输出 } } return 0; } ```
by TooAmazing @ 2023-05-20 20:55:10


把判断质数的代码改成这样应该可以过, wa的那个数据是第一个数据吧 输入 7 1 2 3 4 5 1 2 输出 2 3 5 2 ```cpp bool zspd(int a) { bool flag = true; if (a == 1)return false; for (int j = 2; j <= sqrt(a); j++) { if (a % j == 0) { return false; break; } } return true; } ```
by xingwuKling @ 2023-05-20 20:59:35


ac解法
by TooAmazing @ 2023-05-20 20:59:44


@[xingwuKling](/user/915253) 已经return了就不用break了
by TooAmazing @ 2023-05-20 21:00:45


是的,他的这个代码要特判1
by xingwuKling @ 2023-05-20 21:01:15


@[tangyueyang](/user/780034) 是的有些小瑕疵,偶然写代码的习惯罢了,break可以不写
by xingwuKling @ 2023-05-20 21:03:51


要判断ai=1这个特例
by chengxuyuan666 @ 2023-06-02 14:51:53


``` #include<bits/stdc++.h> using namespace std; int No(int s) { if (s < 2) { return 0; } for (int x = 2; x * x <= s; x++) { if (s % x == 0) { return 0; } } return 1; } int main() { int n; cin >> n; int a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { if (No(a[i])) { cout << a[i] << " "; } } return 0; } ```
by jiangjinke @ 2023-06-15 15:08:36


|