LightOJ 1370

一开始以为要用线性筛预处理欧拉函数表,但数论是个奇妙的东西,有些规律需要试试看,而其证明不那么重要?
给出欧拉函数值:求1-N

const int N = 1e6 + 10;
int t;

int book[N], primes[N], cnt;
void xianxing(int n)
{
	f(i, 2, n)
	{
		if (!book[i])
			primes[cnt++] = i;
		for (int j = 0;primes[j] <= n / i;++j)
		{
			book[primes[j] * i] = 1;
			if (i%primes[j] == 0)break;
		}
	}
}
int main()//给出欧拉函数值  求最小的大于该值的数的坐标    发现是大于该phi的质数
{

	xianxing(N-1);
	cin >> t;
	int n, x;
	//f(i, 0, 100)
		//cout << primes[i] << endl;
	int cot = 1;
	while (t--)
	{
		scanf("%d", &n);
		ll ans = 0;
		f(i, 1, n)
		{
			scanf("%d", &x);
			//debug(x);
			int j = upper_bound(primes, primes+cnt, x) - primes;
			//debug(j);
			ans += primes[j];
		}
		printf("Case %d: %lld Xukha\n", cot++, ans);
	}
	return 0;
}
发布了22 篇原创文章 · 获赞 2 · 访问量 376

猜你喜欢

转载自blog.csdn.net/qq_43543086/article/details/104647817