1. 程式人生 > >Sum nyoj 尤拉定理簡單運用(數論入門)

Sum nyoj 尤拉定理簡單運用(數論入門)

Sum

時間限制:1000 ms  |  記憶體限制:65535 KB 難度:3
描述

            給你一個數N,使得在1~N之間能夠找到x使得x滿足gcd( x ,  N  ) >= M,

求解gcd(x,N)的和

輸入
多組測試資料

每行輸出兩個數N,M(N,M不超int)
輸出
輸出sum
樣例輸入
5 3
樣例輸出
5
上傳者

尤拉定理:

尤拉定理表明,若n,a為正整數,且n,a互質gcd(n,a)=1;

覺得維基百科比百度講解得好些(逃了一天的課 就看了zsj的數論基礎-╮(╯▽╰)╭)

http://baike.baidu.com/view/48903.htm?fr=aladdin

http://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86_(%E6%95%B0%E8%AE%BA)

/*在數論,對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。*/
/*思路:列舉n的因子。
假設n的因子為d。d*gcd(x/d,n/d)=1。
d*Euler(n/d)就是因子為gcd(x,n)=d,從而求gcd(x,n)的和。*/

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

long long Euler(long long n)//尤拉函式
{
    long long c=n,i;
    for(i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            while(n%i==0) n/=i;
            c=c/i*(i-1);//φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn);
        }
    }
    if(n!=1)
            c=c/n*(n-1);
    return c;
}

int main()
{
    long long  a,b;
    while(cin>>a>>b)
    {
        int cnt;
        long long i,c=0;
        for(i=1;i*i<=a;i++)
        {
            if(a%i==0)
            {
                if(i>=b)
                {
                    cnt=i;//- -
                    c=c+cnt*Euler(a/cnt);
                }
                if(i*i!=a&&a/i>=b)//列舉i與n的因子。
                {
                    cnt=a/i;
                    c=c+cnt*Euler(a/cnt);
                }
            }
        }
        cout<<c<<endl;
    }
}





相關推薦

Sum nyoj 定理簡單運用數論入門

Sum 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:3 描述             給你一個數N,使得在1~N之間能夠找到x使得x滿足gcd( x ,  N  ) >= M, 求解gcd(x,N)的和 輸入多組測試資料 每

定理、拓展定理及其應用降冪法

摘要   本文主要介紹了數論中的尤拉定理,進而介紹尤拉定理的拓展及應用,結合例題展示如何使用拓展尤拉定理實現降冪取模。   在數論中,尤拉定理,(也稱費馬-尤拉定理)是一個關於同餘的性質定理。瞭解尤拉定理之前先來看一下費馬小定理:     a是不能被質數p整除的正整數,則有a^(p

hdu 4704 Sum (組合+定理

http://acm.hdu.edu.cn/showproblem.php?pid=4704大意:給定N,設S(k)是由k個數字相加得到N的方案數,求解 分析:本題中兩個數字的排列,如1、2 應該有2

另類容斥和函式巧妙應用HDU--5514

There are mm stones lying on a circle, and nn frogs are jumping over them.  The stones are numbered from 00 to m−1m−1 and the frogs are nu

8.2學長講解數論入門

相應題目連結:https://vjudge.net/contest/175786#overview 1.線性篩選素數:參考http://blog.csdn.net/zhang20072844/article/details/7647763 #include N 10000

bzoj 3884 上帝與集合的正確用法 Codeforces 906D:Power Tower 擴充套件定理

擴充套件尤拉定理   AC程式碼 bzoj 3884 #include<bits/stdc++.h> #define N 2000005 #define P pair<int,int> using namespace std; typedef

牛客網暑期ACM多校訓練營第四場A.Ternary String擴充套件定理

題意 每秒鐘2後面加一個1,1後面加1個0,然後刪除第一個字元,問需要多少秒才能刪完 題解 可以發現:0會使答案加1,1會使答案T*2+2,2會使答案T變成(2^(T+1)-1)*3,所以一邊計算即可,但是由於要取模,所以需要擴充套件尤拉定理,證明轉載自http://blog.csdn.

[BZOJ4869][Shoi2017]相逢是問候廣義定理+線段樹

Address 洛谷P3747 BZOJ4869 LOJ#2145 Solution 前置知識:廣義尤拉定理。 當 b ≥

2018.10.02 NOIP模擬 序列維護線段樹+廣義定理

描述 給出一個長度為n的序列,每個位置有個數字Ai,有2個操作: 1、區間修改,將[L,R]區間的數字加上一個數 2、區間查詢[l,r] 查詢:alal+1al+2....armodpa_l^{a_{l+1}^{a_{l+2}^{\text{....}^{a_r

2018.10.02【校內模擬】序列維護分塊廣義定理

【描述】 ~沒有題面, 非常友好~ 給出一個長度為 n 的序列, 每個位置有個數字 Ai,有 2 個操作: 1、區間修改,將[L,R]區間的數字加上一個數 2、區間查詢[l,r] 查詢alal+1al+2...armodpa_l^{a_{l+1}^{a_{l+2

luogu P4139 上帝與集合的正確用法擴充套件定理

本蒟蒻現在才知帶擴充套件尤拉定理。 對於任意的\(b\geq\varphi(p)\)有 \(a^b\equiv a^{b\ mod\ \varphi(p)+\varphi(p)}(mod\ p)\) 當\(b<\varphi(p)\)有 \(a^b\equiv a^{b\ mod\ \varphi(p)

逆元的幾種求法擴充套件歐幾里得,費馬小定理定理,特例,打表等

乘法逆元 對於縮系中的元素,每個數a均有唯一的與之對應的乘法逆元x,使得ax≡1(mod n) 一個數有逆元的充分必要條件是gcd(a,n)=1,此時逆元唯一存在 逆元的含義:模n意義下,1個數a

求組合數取模楊輝三角打表 & 求逆元擴充套件歐幾里得、費馬小定理定理、線性求法 & Lucas

    在acm競賽中,組合數取模的題目還是經常會見到的,所以這是有必要掌握的一個演算法。我本人就因為這個東西而被坑了很多次了= =之前的部落格也都扯過了,就不多說了,下面進入正題。 (1)楊輝三角求組合數     楊輝三角這個東西應該都不陌生,三角的兩邊始終為一,之後向

數論文章----關於逆元的求法定理,階乘逆元,費馬小定理,模質數p的情況

乘法逆元 對於縮系中的元素,每個數a均有唯一的與之對應的乘法逆元x,使得ax≡1(mod n) 一個數有逆元的充分必要條件是gcd(a,n)=1,此時逆元唯一存在 逆元的含義:模n意義下,1個數a如果有逆元x,那麼除以a相當於乘以x。 下面給出求逆元的幾種方法: 1

LOJ 2142 相逢是問候擴充套件定理+線段樹

題意 https://loj.ac/problem/2142 思路 一個數如果要作為指數,那麼它不能直接對模數取模,這是常識; 諸如 \(c^{c^{c^{c..}}}\) 的函式遞增飛快,不是高精度可以描述的,這也是常識。 所以,此題要用到很多數論知識。 尤拉函式 定義 \(\varphi(

【模板】定理洛谷P5091

https://ouuan.blog.luogu.org/solution-p5091   #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using

[六省聯考2017]相逢是問候線段樹+拓展定理

好題啊! 調了一箇中午,發現有一條語句 \(RE\) 了。在 \(windows\) 下沒關係,\(linux\) 下有問題,大大的問題。 while(phi[tot]!=1) phi[++tot]=calc_phi(phi[tot-1]); 算是拓展尤拉定理的題吧。線段樹只是一個工具,最主要還是暴力修

hdu3221 擴充套件定理降冪大法

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=3221 題解:首先很容易發現遞推公式fn=fn-1*fn-2;寫出前幾項a,b,a*b,a*b^2,a^

定理數論定理在 模冪運算中的應用

< 前言 >   在很多情況下,我們經常會遇到很大的數a和b,求a的b 次冪中的某位數是什麼,對於運算,用暴力求解往往會溢位,並且非常麻煩。 而 利用模運算性質和 尤拉定理中的數論定理,則可方便求解 首先,尤拉定理(數論定理) 內容 尤拉定理(數論定理

定理 、擴充套件定理降冪原理證明

(所有^為次方) 尤拉定理: a^phi(m)=1 (mod m)   ( gcd(a,m)=1 ) 設1到m中與m互質的數為 x1, x2, x3, ……x phi(m) 令pi=xi*a   引理一:p之間兩兩模m不同餘,x之間兩兩模m不同於 x兩兩模m不同樣