Sigma Function (LightOJ - 1336)【简单数论】【算术基本定理】【思维】

标签: 入门讲座题解 数论


题目描述

Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma (σ). This function actually denotes the sum of all divisors of a number. For example σ(24) = 1+2+3+4+6+8+12+24=60. Sigma of small numbers is easy to find but for large numbers it is very difficult to find in a straight forward way. But mathematicians have discovered a formula to find sigma. If the prime power decomposition of an integer is



Then we can write,



For some n the value of σ(n) is odd and for others it is even. Given a value n, you will have to find how many integers from 1 to n have even value of σ.

Input

Input starts with an integer T (≤ 100), denoting the number of test cases.

Each case starts with a line containing an integer n (1 ≤ n ≤ 1012).

Output

For each case, print the case number and the result.

Sample Input

4

3

10

100

1000

Sample Output

Case 1: 1

Case 2: 5

Case 3: 83

Case 4: 947

题意

约数和函数$$\sigma{(n)} = \sum_{d | n} d;.$$

给定\(n\),询问\([1, n]\)区间内有几个\(i\),使得\(\sigma{(i)}\)为偶数?


解析

根据算数基本定理,正整数\(n\),有唯一质因数分解形式,$$n = p_1^{\alpha_1}\cdot p_2^{\alpha_2} \cdot p_3^{\alpha_3} \cdot ,,\cdots ,, \cdot p_n^{\alpha_n}\quad(p_i ;is ;a ;prime).$$

那么,根据乘法计数原理,显然有\(\sigma{(n)} = (1 + p_1^1 + p_1^2 + \cdots p_1^{\alpha_1}) \cdot (1 + p_2^1 + p_2^2 + \cdots + p_2^{\alpha_2}) \cdot (1 + p_3^1 + p_3^2 + \cdots + p_3^{\alpha_3}) \cdot \,\, \cdots \,\, \cdot (1 + p_n^1 + p_n^2 + \cdots + p_n^{\alpha_n})\).

正难则反,我们不方便研究\(\sigma{(n)}\)为偶数的情况,我们可以研究\(\sigma{(n)}\)为奇数的个数,然后用总数减掉奇数个数,就得到偶数个数。

  1. 首先,我们要清楚
  • 偶数 + 偶数 = 偶数

    奇数 + 偶数 = 奇数

    奇数 + 奇数 = 偶数

  • 偶数 * 偶数 = 偶数

    奇数 * 偶数 = 偶数

    奇数 * 奇数 = 奇数。

  1. 我们知道,只有让\(\sigma{(n)}\)的全部因数都为奇数才可以使\(\sigma{(n)}\)为奇数。
  • 若\(2 \,| \,n\),则\((1 + p_1^1 + p_1^2 + \cdots p_1^{\alpha_1})\)这项一定是奇数。因为\(2\)的任何次幂都是偶数,且偶数 + 奇数 = 奇数。

  • 对于除\(2\)以外的其他质数,它的任何次幂都一定是奇数。要想使因数项为奇数,则只能构造($1 + $ 偶数) 的这种形式.当有偶数个奇数相加时,它们的和是偶数。所以,\(\alpha_1,\alpha_2, \alpha_3, \dots,\alpha_n\)(不包括\(2\)的指数)都应该是偶数。

  • \(n\) 可以是一个完全平方数。当\(n\)是一个完全平方数时,\(\alpha_1,\alpha_2, \alpha_3, \dots,\alpha_n\)都是偶数。因为\(n\)可以找到两个完全相同的因子。

    或者,\(n\)可以是$2 \times $ 完全平方数。因为把\(2\)当作底数的因数项永远是奇数,所以乘上\(2\)依然能保持所有乘数项都是奇数。(为什么没有$2^2, 2^3, 2^4, \dots \times $ 完全平方数?当\(2\)的指数为偶数时,用完全平方数就可以找到这个数。如果是奇数时,指数 = 1 + 偶数,又还原为$2 \times $ 完全平方数。)

  • 综上,\(ans = n - \sqrt{n} - \sqrt{n / 2}\)。


通过代码

/*
Problem
LightOJ - 1336
Status
Accepted
Time
151ms
Memory
2084kB
Length
411
Lang
C++
Submitted
2019-11-26 23:30:58
RemoteRunId
1641328
*/ #include <bits/stdc++.h>
using namespace std; typedef long long ll; int main()
{
int times, kase = 0; scanf("%d", &times); while(times --){
ll n, cnt = 0; //cnt也有可能会超过1e9,所以要声明为long long类型.
scanf("%lld", &n); for(ll i = 1; i * i <= n; i ++){
cnt ++; //不超过n的完全平方数计数. if(2 * i * i <= n)
cnt ++; //不超过n/2的完全平方数计数.
} printf("Case %d: %lld\n", ++ kase, n - cnt);
} return 0;
}

Sigma Function (LightOJ - 1336)【简单数论】【算术基本定理】【思维】的更多相关文章

  1. C - Sigma Function LightOJ - 1336 (数论)

    一个让人脑洞大开的题. 题目大意比较简单,询问[1,n]有多少个数其因子和为偶数. 因子分解定理中求因子和的公式是 f(n)=(1+p1+p1^2+p1^3+...+p1^a1)(1+p2+p2^2+ ...

  2. Sigma Function LightOJ - 1336 (约数和为奇数)

    题意: 求1-n中约数和为偶数的数的个数 记住一个定理:...平方数 及其 平方数的2倍 的约数和为奇数  then....减啦 证明: ....我jiao着人家写的很详细,so 看看人家写的吧! 转 ...

  3. Pairs Forming LCM (LightOJ - 1236)【简单数论】【质因数分解】【算术基本定理】(未完成)

    Pairs Forming LCM (LightOJ - 1236)[简单数论][质因数分解][算术基本定理](未完成) 标签: 入门讲座题解 数论 题目描述 Find the result of t ...

  4. Aladdin and the Flying Carpet (LightOJ - 1341)【简单数论】【算术基本定理】【分解质因数】

    Aladdin and the Flying Carpet (LightOJ - 1341)[简单数论][算术基本定理][分解质因数](未完成) 标签:入门讲座题解 数论 题目描述 It's said ...

  5. LightOJ - 1336 - Sigma Function(质数分解)

    链接: https://vjudge.net/problem/LightOJ-1336 题意: Sigma function is an interesting function in Number ...

  6. LightOJ 13361336 - Sigma Function (找规律 + 唯一分解定理)

    http://lightoj.com/volume_showproblem.php?problem=1336 Sigma Function Time Limit:2000MS     Memory L ...

  7. 【LightOJ1336】Sigma Function(数论)

    [LightOJ1336]Sigma Function(数论) 题面 Vjudge 求和运算是一种有趣的操作,它来源于古希腊字母σ,现在我们来求一个数字的所有因子之和.例如σ(24)=1+2+3+4+ ...

  8. 1336 - Sigma Function

    1336 - Sigma Function   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB S ...

  9. Help Hanzo (LightOJ - 1197) 【简单数论】【筛区间质数】

    Help Hanzo (LightOJ - 1197) [简单数论][筛区间质数] 标签: 入门讲座题解 数论 题目描述 Amakusa, the evil spiritual leader has ...

随机推荐

  1. Docker 中卷组管理

    一.概念 数据卷是一个可供一个或多个容器使用的特殊目录实现让容器的一个目录和宿主机中的一个文件或者目录进行绑定.数据卷 是被设计用来持久化数据的,对于数据卷你可以理解为NFS中的哪个分享出来的挂载点, ...

  2. MySQL数据库:运算符

    运算符 比较运算符: > 大于 < 小于 >= 大于等于 <= 小于等于 = 等于 != 不等于 范围运算符: between...and...(包含边界值) 类似于 > ...

  3. phpMyAdmin开启IP地址登录

    根本没有其他文章说的那么麻烦,又是修改配置文件,又是修改首页文件.在根目录下有个libraries文件夹,进去有个config.default.php文件,修改里面的AllowArbitrarySer ...

  4. IPv6升级测试指南(Android/iOS/Mac)

    目录 我们升级到IPv6的原因 测试的时候的注意要点 Android/IOS/MAC测试总结 Android测试IPv6的方法 IOS端测试IPv6的方法 MAC浏览器端测试IPv6的方法 升级IPV ...

  5. 关于JDK动态代理与Cglib代理

    关于JDK动态代理与Cglib代理 最近有时间学习一下SpringAOP源码,底层用到了代理,大概是这样的: 当需要被代理的类实现了接口,则使用JDK动态代理创建代理对象,增加增强操作执行目标方法 当 ...

  6. 关于VAD的两种内存隐藏方式

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 技术学习来源:火哥(QQ:471194425) 内存在0环的两种内 ...

  7. C++利用宏实现变量交换的三种方式

    #include <iostream> using namespace std; //引入中间变量 #define SWAP1(a,b) {int tmp=a;a=b;b=tmp;} // ...

  8. tcprstat和tcpstat性能监控

    tcprstat分析服务的响应速度利器   tcprstat是percona用来监测mysql响应时间的.不过对于任何运行在TCP协议上的响应时间,都可以用. 下面是一个监控示例,监控分析mysql的 ...

  9. 从0系统学Android-2.6Activity间数据传递

    本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 2.3.4 向下一个 Activity 传递数据 前面学习了使用 Intent 来启动一个 Activity ,其 ...

  10. SpringCloud之Eureka:服务发布与调用例子

    Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的. SpringCloud将它集成在其子 ...