LightOJ 1336 - Sigma Function(算术基本定理)

本文探讨了数学中Sigma函数的性质,特别是当输入为完全平方数或其两倍时,函数值为奇数的特殊情况。通过分析质因数分解和算术基本定理,得出了判断方法及相应的算法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sigma Function

题解:首先,分析题目公式(1)σ(n)=p1e1+1−1p2−1⋅p2e2+1−1p2−1⋅......⋅pkek+1−1pk−1\sigma(n) = \frac{p_1^{e_1+1}-1}{p_2-1}\cdot \frac{p_2^{e_2+1}-1}{p_2-1}\cdot......\cdot\frac{p_k^{e_k+1}-1}{p_k-1} \tag1σ(n)=p21p1e1+11p21p2e2+11......pk1pkek+11(1)
我们发现可以先求为奇数的个数,再用nnn减去即可。
由等比数列的知识可知:
(2)pe+1−1p−1=1+p1+p2+......+pe\frac{p^{e+1}-1}{p-1}=1+p^1+p^2+......+p^e\tag 2p1pe+11=1+p1+p2+......+pe(2)
其次我们可以知道除了222其它质数都是奇数,因此

  1. ppp为奇数时,pep^epe一定为奇数,如果要使(2)(2)(2)为奇数,那么eee必为偶数。
  2. ppp为偶数,即2e2^e2e,此时(2)(2)(2)必为奇数。

再由算术基本定理n=p1e1⋅p2e2⋅p3e3......pkekn = p_1^{e_1} \cdot p_2^{e_2} \cdot p_3^{e_3}......p_k^{e_k}n=p1e1p2e2p3e3......pkek
因此我们可以知道如果是情况一的话,eie_iei为偶数,nnn此时必定为完全平方数XXX;如果是情况二,此时n=2e⋅Xn = 2^e \cdot Xn=2eX,如果eee为偶数,那么nnn就还是完全平方数,否则n=2⋅Xn = 2\cdot Xn=2X

最后显然我们可以发现σ(X)\sigma(X)σ(X)为奇数。

因此我们只需减去nnn以内为XXX2⋅X2\cdot X2X的情况即可。

代码

#include<bits/stdc++.h>

using namespace std;
typedef long long LL;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.in","r",stdin);
#endif
	int T, t = 1;
	cin >> T;
	while(T--) {
		LL n;
		cin >> n;
		cout << "Case " << t++ << ": " << n - (LL)sqrt(n) - (LL)sqrt(n / 2.0) << endl;
	}
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值