zoukankan      html  css  js  c++  java
  • Sigma Function 数学 因子求和

    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

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<sstream>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<stack>
    #include<set>
    #include<fstream>
    #include<memory>
    #include<list>
    #include<string>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    #define MAXN  1000010
    #define LLL 1000000000
    #define INF 1000000009
    /*
    给一个公式,将一个数表示为所有素因子等比数列 求前e个 的乘积
    求小于n的数中为奇数的个数
    数据很大不能打表。。
    当p为偶数 ,p的次方为偶数,加上p的0次方 最后得出奇数不成立
    当P为奇数,P的次方为奇数,要有偶数个奇数相加才能得出偶数,要求e为奇数
    当所有的 p和e中总是存在任何一个不为奇数的时候,结果为奇数
    e为偶数 平方数  后面乘某些数 后面的数字是2的几次方的时候仍然成立 (2是唯一的素偶数)
    所有个数为 平方数||2*平方数
    */
    int main()
    {
        LL T,n;
        scanf("%lld", &T);
        for(LL cas=1;cas<=T;cas++)
        {
            scanf("%lld", &n);
            LL t1 = sqrt(n*1.0);
            LL t2 = sqrt(n*0.5);
            printf("Case %lld: %lld
    ",cas, n - t1 - t2);
        }
        return 0;
    }
  • 相关阅读:
    使用JS获取选中的复选框的值
    AngularJS实现tab选项卡
    Java递归获取树父节点下的所有树子节点
    SQL中的case when then
    用sql语句(alter)追加新字段、外键、删除列
    javascript把number转化成百分比
    使用group by来去除重复记录
    JavaScript数组
    基本排序方法
    (转)如何学好C语言
  • 原文地址:https://www.cnblogs.com/joeylee97/p/6829730.html
Copyright © 2011-2022 走看看