同一份代码一个9AC1TLE,一个全AC了
查看原帖
同一份代码一个9AC1TLE,一个全AC了
815075
hzy99999楼主2023/3/8 20:17

9AC1TLE版

#include<iostream>
#include<math.h>
using namespace std;
const int N = 1e8+10;
int cnt;
bool v[N];
void get_primes(int n)
{
	int m = sqrt(n + 0.5);
	for (int i = 2; i <= m; i++)
		if (!v[i])
		    for (int j = i * i; j <= n; j += i)
		        v[j] = 1;
}
int main()
{
    int n;
	scanf("%d", &n);
	get_primes(n);
	for (int i = 2; i <= n; i++)
		if (!v[i])cnt++;
	printf("%d", cnt);
	return 0;
}

全AC版

#include<iostream>
#include<math.h>
using namespace std;
const int N = 1e8+10;
int cnt;
bool v[N];
void get_primes(int n)
{
	int m = sqrt(n + 0.5);
	for (int i = 2; i <= m; i++)
	{
		if (!v[i])
		{
		    for (int j = i * i; j <= n; j += i)
		    {
		        v[j] = 1;
		    }
		}
	}
}
int main()
{
    int n;
	scanf("%d", &n);
	get_primes(n);
	for (int i = 2; i <= n; i++)
	{
		if (!v[i])cnt++;
	}
	printf("%d", cnt);
	return 0;
}

唯一的区别就是一个加了括号,一个不加括号,感觉很神奇~

2023/3/8 20:17
加载中...