只有1个测试点没过,求助

B2137 判决素数个数

你这个有问题,我看出来了,你好好想想,有一个小问题
by sdjy20120918 @ 2024-04-24 17:05:59


`int count=m<3?1:0;` 这一行没有考虑 m ,n 均小于 3 的情况。
by co7ahang @ 2024-04-24 17:06:46


没有必要把奇数和偶数分开处理,这样会显得代码很乱。 在函数中判断就可以了。如果参数为偶数,在第一次循环 i = 2 时就会返回 false 。 ``` bool is_prime(int a){ if(a<2) return false; for(int i=2;i*i<=a;i++){ if(a%i==0) return false; } return true; } ```
by co7ahang @ 2024-04-24 17:10:36


主函数就可以直接改成 ``` int main(){ int m,n; cin>>m>>n; if(m>n)swap(m,n); int count=0; for(int i=m;i<=n;i++){ if(is_prime(i)){ count++; } } cout<<count<<endl; return 0; } ```
by co7ahang @ 2024-04-24 17:13:03


@[co7ahang](/user/831011) 原来如此,感谢感谢
by nanoko4 @ 2024-04-24 17:13:16


|