1. 程式人生 > >Hdu1452 因子和的積性函式 以及積性函式的一些性質和舉例

Hdu1452 因子和的積性函式 以及積性函式的一些性質和舉例

在非數論的領域,積性函式指所有對於任何a,b都有性質f(ab)=f(a)f(b)的函式。  

在數論中的積性函式:對於正整數n的一個算術函式 f(n),若f(1)=1,且當a,b互質時f(ab)=f(a)f(b),在數論上就稱它為積性函式。

若對於某積性函式 f(n),就算a, b不互質,也有f(ab)=f(a)f(b),則稱它為完全積性的。[1]

s(6)=s(2)*s(3)=3*4=12;

s(20)=s(4)*s(5)=7*6=42;

再看 s(50)= 1+2+5+10+25+50=93=3*31=s(2)*s(25),s(25)=1+5+25=31.

這在數論中叫積性函式,當gcd(a,b)=1

s(a*b)=s(a)*s(b);

如果p是素數

s(p^n)=1+p+p^2+...+p^n= (p^(n+1)-1) /(p-1) (1)

hdu1452 Happy 2004

計算因子和 s(2004^X) mod 29 ,

2004=2^2 *3 *167

2004^X=4^X * 3^X *167^X

s(2004^X) ) = (s(2^2X))) * (s(3^X))) * (s(167^X)))

167%29=22

s(2004^X) ) = (s(2^2X))) * (s(3^X))) * (s(22^X)))

a=s(2^2X)=(2^(2X+1)-1) //根據1

b=s(3^X)= (3^(X+1)-1)/2 //

根據1

c=s(22^X)= (22^(X+1)-1)/21 //根據1

%運演算法則 1. (a*b) %p= ( a%p) *(b%p)

%運演算法則 2. (a/b) %p= ( a *b^(-1)%p) 除法的

s(2004^X)=2^(2X+1)-1* (3^(X+1)-1)/2  *(22^(X+1)-1)/21

(a*b)/c %M= a%M* b%M  * inv(c)

c*inv(c)=1 %M    模為1的所有數  invc)為最小可以被c整除的

inv(2)=15,  inv(21)=18    2*15=1 mod 29, 18*21=1 mod 29

s(2004^X)=

((2^(2X+1)-1* (3^(X+1)-1)/2  *(22^(X+1)-1)/21mod 29

         =((2^(2X+1)-1* (3^(X+1)-1)*15 *(22^(X+1)-1)*18mod29

b^(-1) b的逆元素(%p)即上面的inv

2的逆元素是15  ,因為2*15=30 % 29=1 % 29

21的逆元素是18  ,因為21*18=378% 29 =1 % 29

因此

a=powi(2,2*x+1,29)-1% 29;

b=(powi(3,x+1,29)-1)*15 % 29;

c=(powi(22,x+1,29)-1)*18 % 29;

ans=a*b% 29*c % 29;

#include <iostream>  
#include <cstdio>  
#include <cmath>  
  
using namespace std;  
  
int _pow( int a, int n )  
{  
    int b = 1;  
    while( n > 1 )  
        if( n % 2 == 0 )  
        {  
            a = ( a * a ) % 29;  
            n /= 2;  
        }  
        else  
        {  
            b = b * a % 29;  
            n--;  
        }  
        return a * b % 29;  
}  
int main()  
{  
    int X;  
    int a, b, c;  
    while( scanf("%d",&X), X )  
    {  
        a = _pow( 2, 2 * X + 1 );  
        b = _pow( 3, ( X + 1 ) );  
        c = _pow( 22, ( X + 1 ) );  
        printf("%d\n",( a - 1 ) * (( b - 1 ) * 15) * ( c - 1 ) * 18 % 29) ; 
    }  
    return 0;  
}

性質1

  積性函式的值完全由質數的冪決定,這和算術基本定理有關。

即是說,若將n表示成質因子分解式

則有

性質2

f為積性函式且有

f為完全積性函式。

積性

  φ(n) 尤拉函式,計算與n互質的正整數之數目

  μ(n) 莫比烏斯函式,關於非平方數的質因子數目

  gcd(n,k)-最大公因子,當k固定的情況

  d(n) n的正因子數目

  σ(n) n的所有正因子之和

  σk(n)-因子函式,n的所有正因子的k之和,當中k可為任何複數

  1(n) -不變的函式,定義為 1(n) = 1 (完全積性)

  Id(n)-單位函式,定義為 Id(n) = n(完全積性)

  Idk(n)-冪函式,對於任何複數、實數k,定義為Idk(n) = n^k(完全積性)

  ε(n) -定義為:若n = 1ε(n)=1;若 n > 1ε(n)=0。別稱為對於狄利克雷卷積的乘法單位(完全積性)

  λ(n) -劉維爾函式,關於能整除n的質因子的數目

  γ(n),定義為γ(n)=(-1)^ω(n),在此加性函式ω(n)是不同能整除n的質數的數目

另外,所有狄利克雷特徵均是完全積性的[1]

非積性

  ·曼戈爾特函式:當n是質數p的整數冪,Λ(n)=ln(p),否則Λ(n)=0

  不大於正整數n的質數的數目π(n)

  整數拆分的數目P(n):一個整數能表示成正整數之和的方法的數目[2]

相關推薦

Hdu1452 因子函式 以及函式一些性質舉例

在非數論的領域,積性函式指所有對於任何a,b都有性質f(ab)=f(a)f(b)的函式。   在數論中的積性函式:對於正整數n的一個算術函式 f(n),若f(1)=1,且當a,b互質時f(ab)=f

Python中的sorted函式以及operator.itemgetter函式

文章出處 operator.itemgetter函式 operator模組提供的itemgetter函式用於獲取物件的哪些維的資料,引數為一些序號(即需要獲取的資料在物件中的序號),下面看例子。 a = [1,2,3]  >>> b=operator.i

python匿名函式以及內建函式的使用

一、匿名函式  1.定義:    匿名函式顧名思義就是指:是指一類無需定義識別符號(函式名)的函式或子程式。 2.語法格式:lambda 引數:表示式   lambda語句中,開頭先寫關鍵字lambda,冒號前是引數,可以有多個,用逗號隔開;冒號右

登入介面上的驗證碼的驗證碼的製作 以及git上的一些概念使用

1、一般的json結尾的api都是表示返回的是json格式,所以,我們一般都是在中間增加了model層和controller層之間的服務層,有利於應用層面的使用。 2、今天做了驗證碼,就是如果使用sdWebImage,由於已經封裝為快取,並且獲取圖片的方法沒有快取的方式很少

kylin安裝以及遇見到的一些問題解決方法

環境: 三臺hadoop叢集,hive,hbase,zookeeper 三臺機器內網互相通訊,配置有一個外網ip,使用nginx埠對映 kylin安裝: 安裝部分參考文件: https://blog.csdn.net/seashouwang/article/detail

python sorted函式以及operator.itemgetter函式

參考: 《Machine Learning In Action》第二章 ############################################################### operator.itemgetter函式: import ope

數論學習筆記 尤拉函式一些性質運用)內建杜教篩

定義 在數論中,對正整數n,尤拉函式是小於等於n的數中與n互質的數的數目。並且用符號φ(n)表示一個整數的尤拉函式。例如φ(8)=4。特殊的φ(1)=1。 一些尤拉函式的性質 性質一 對於一個質數n,φ(n)=n−1。 證明: 因為n是質數。

Python中的sorted函式以及operator.itemgetter函式 【轉載】

operator.itemgetter函式 operator模組提供的itemgetter函式用於獲取物件的哪些維的資料,引數為一些序號(即需要獲取的資料在物件中的序號),下面看例子。 a = [1,

python @classmethod @staticmethod區別,以及類中方法引數clsself的區別

staticmethod 首先來看@staticmethod,這個裝飾器很好理解,就是讓類中的方法變成一個普通的函式(因為是普通函式,並沒有繫結在任何一個特定的類或者例項上。所以與不需要物件例項化就可以直接呼叫)。可以使用類或者類的例項呼叫,並且沒有任何隱含引數的傳入,

C++之普通成員函式、虛擬函式以及純虛擬函式的區別與用法要點

普通成員函式是靜態編譯的,沒有執行時多型,只會根據指標或引用的“字面值”類物件,呼叫自己的普通函式;虛擬函式為了過載和多型的需要,在基類中定義的,即便定義為空;純虛擬函式是在基類中宣告的虛擬函式,它可以再基類中有定義,且派生類必須定義自己的實現方法。 假設我們有三個類Person、Teacher

Java中子類是否可以繼承父類的static變數static方法,以及父類的private屬性private方法

轉載自以下原文: 原文連結1 原文連結2 一、子類可以繼承父類的private屬性和private方法: 1、子類繼承父類,子類擁有了父類的所有屬性和方法。 程式驗證,父類的私有屬性和方法子類是無法直接訪問的。當然私有屬性可以通過public修飾的

由 [SDOI2012]Longge的問題 探討尤拉函式莫比烏斯函式一些性質關聯

本題題解 題目傳送門:https://www.luogu.org/problem/P2303 給定一個整數\(n\),求 \[ \sum_{i=1}^n \gcd(n,i) \] 蒟蒻隨便yy了一下搞出來個\(O(\sqrt{n})\)的演算法 這題資料怎麼這麼水 首先看到gcd我們就下意識的對它反演一波

最小生成樹的一些性質理解

1) 定義在一棵樹裡新增一條邊,並在產生的圈裡刪除一條邊叫做一次操作。(也就是說換掉一條邊並且保證結果是樹),則樹A和B是無向圖的兩個生成樹,則A可以通過若干次操作變成B。 證:把樹看作邊的集合,如果B中有一條A沒有的邊,則把這條邊加到A上,A產生一個圈中至少有一條是B中沒有的邊,把這條邊刪掉,則

platform匯流排普通匯流排,驅動模型間的一些關係理解

【摘要】本文以Linux 2.6.25 核心為例,分析了基於platform匯流排的驅動模型。首先介紹了Platform匯流排的基本概念,接著介紹了platform device和platform driver的定義和載入過程,分析了其與基類device 和driver的派生

51nod 1244 莫比烏斯函式之和(函式字首)

關於積性函數前綴和的問題,可以關注糖老師的博客 http://blog.csdn.net/skywalkert/article/details/50500009 推導不寫了 結論是M(n)=∑ni=1u(i) M(n)=1−∑ni=2M(ni) 直接遞

MATLAB卷運算(conv)以及通用的卷函式my_conv的實現

conv(向量卷積運算) 兩個向量卷積,簡單理解其實就是多項式乘法。  比如:p=[1 2 3],q=[1 1]是兩個向量,p和q的卷積計算方法如下:  把p的元素作為一個多項式的係數,多項式按升冪(或降冪)排列,比如就按升冪吧,寫出對應的多項式:1+2x+3x^2;同樣的

[HDU 5728] PowMod (尤拉函式+尤拉公式降冪+尤拉篩)

HDU - 5728 求 K=∑i=1mϕ(i∗n)mod1000000007 其中 n是 square-free number 求 ans=KKKK..modp 先求 K 由於 ϕ(n)是積性函式,所以對於 n的每個素因子可以提出

6265丨數論丨函式 丨尤拉函式丨狄利克雷卷丨思維變換

交題網址(HDU-6265) 題意:依次輸入一個整數分解質因數的各項底數與指數,求算: ∑d|nφ(d)×nd∑d|nφ(d)×nd 思路:(其實最開始還有些數學常識的不足,比如d|n

神經網絡系列之softmax,softmax losscross entropy的講解

caff 這一 卷積神經網絡 bsp rop 技術分享 有一個 技術 位置 我們知道卷積神經網絡(CNN)在圖像領域的應用已經非常廣泛了,一般一個CNN網絡主要包含卷積層,池化層(pooling),全連接層,損失層等。雖然現在已經開源了很多深度學習框架(比如MxNet,Ca

【C/C++開發】C++ 解構函式以及 delete delete[]的整理

轉自:http://hi.baidu.com/bystander1983/item/bf0b5c12b077cfec9913d651 delete和delete[] 的區別: C++告訴我們在回收用 new 分配的單個物件的記憶體空間的時候用 delete,回收用 new[] 分配的一組物