整數分解費馬方法
寫在前面:
這篇部落格是我在[◹]對 算術基本定理 的研究 中的一部分
-
整數分解費馬方法
整數分解費馬方法與費馬小定理無關
原理:
任何一個正整數n都能拆成n==2k*a的形式,其中a為一個奇數
我們在a上搞事情:
若a==c*d (c>d,且顯然cd都是奇數)
那麼讓x==(c+d)/2,讓y==(c-d)/2
這裡是邏輯上的證明,並不是計算機要實現的內容,根本不考慮丟精的情況(就算考慮了,cd都是奇數,不會丟精)
那麼x2-y2==(c2+d2+2c*d)/4-(c2
列舉x2,看看x2-a是不是完全平方數
如果是的話,那麼c==x+√(x2-a)和d==x-√(x2-a)就都是a的因子
可以列舉x2,找出a的所有因子!
有用的性質:
接著上面的證明,x==(c+d)/2,a==c*d
根據基本不等式,(c+d)/2 >= √(cd)
即x2 >= a
在列舉時不需要判斷差的正負了,一定不是負的
程式碼如下:
C++:
Java:
相關推薦
整數分解費馬方法
寫在前面: 這篇部落格是我在[◹]對 算術基本定理 的研究 中的一部分 整數分解費馬方法 整數分解費馬方法與費馬小定理無關 原理: 任何一個正整數n都能拆成n==2k*a的形式,其中a為一個奇數 我們在a上搞事情:
hdu 4704 Sum (整數和分解+快速冪+費馬小定理降冪)
題意: 給n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7)。其中si表示n由i個數相加而成的種數,如n=4,則s1=1,s2=3。 (全題文末) 知識點: 整數n有種和分解方
費馬小定理降冪--nkoj3687 整數拆分
P3687 整數拆分 時間限制 : - MS 空間限制 : 65536 KB 評測說明 : 時限1000ms 問題描述 給你一個正整數N,F(x)表示把N拆分成x個正整數之和的方案數。 例
HDU 4704 SUM 整數快速冪+費馬小定理
題目描述: 分析: 題目要求s1+s2+s3+…+sn;(si表示n劃分i個數的n的劃分的個數,如n=4,則s1=1,s2=3) 假設An=s1+s2+s3+…+sn, 對於n可以先劃分
【例題】【費馬小定理(降冪)、遞推】NKOJ 3687 整數拆分
NKOJ 3687 整數拆分 時間限制 : - MS 空間限制 : 65536 KB 評測說明 : 時限1000ms 問題描述 給你一個正整數N,F(x)表示把N拆分成x個正整數之
篩素數方法(二)—— 費馬小定理及MR素數判斷
註明:本文中的x^y表示x的y次方 一、費馬小定理 1.1 內容 若p為素數,a為正整數,且gcd(a,p)=1,則a^(p−1)≡1(mod p)。1.2 證明 因為p為素數,所以gcd(
Tennis Game CodeForces - 496D(唯一分解定理,費馬大定理)
clu 需要 inf nbsp 出現次數 namespace net src 數加 Tennis Game CodeForces - 496D 通過排列組合解決問題。 首先兩組不同素數的乘積,是互不相同的。這應該算是唯一分解定理的逆運用了。 然後是,輸入中的素數,任意組
因式分解一個正整數(遞迴方法)
#include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <cstdlib> #include <
hdu 4704 sum 大整數取模+費馬小定理+數快速冪
求輸入的n可以有幾種拆分情況: 如: 2-->(2,11)2種 3-->(3,21,12,111)4種 4-->(4,31,13,22,211,112,121,1111)8種 發現規律 結果 = 2^(n-1),再取模得到要求的即為 2^(n-1)%mod
hdu4549矩陣快速冪+費馬小定理
次方 pla pragma nod 技術分享 gif 矩陣 end eof 轉移矩陣很容易求就是|0 1|,第一項是|0| |1 1| |1| 然後直接矩陣快速冪,要用到費馬小定理 :假如p
[51nod1138]正整數分解為幾個連續自然數之和
sqrt esp 連續 奇數 mes 判斷 -i 兩個 註意 解題關鍵:註意為什麽上界是$\sqrt {2n} $ 因為函數是關於m的遞減函數,而結果必須為正整數 $a = \frac{{2n + m - {m^2}}}{{2m}} = \frac{n}{m} + \f
HDU 4704 Sum(隔板原理+組合數求和公式+費馬小定理+快速冪)
ace php 模板 erl char printf 證明 style ron 題目傳送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description Sample Input 2 Sam
SDOI 2010--古代豬文(Lucas算法&費馬小定理&中國剩余定理)
費馬小定理 答案 nbsp ont using main long long 資料 合數 發現幾乎每次數論題洛谷總是讓我TLE一個點。。。。 附圖: 最後那個點優化了很久終於過了。。。。 題意
【數學基礎】【歐拉定理模板】【費馬小定理】
基礎 int 復雜度 amp pan -1 log 分治 質數 費馬小定理:當p是一個質數時,且a和p互質,有ap-1=1(mod p) (歐拉定理的一種特殊情況) 歐拉定理:如果a和n互質,那麽aφ(n)=1(mod n) 對於任意a,b,n就有 ab=
SPOJ DCEPC11B - Boring Factorials 費馬小定理
pri med www. while mat const res 取余 multi 題目鏈接:http://www.spoj.com/problems/DCEPC11B/ 題目大意:求N!對P取余的結果。P是素數,並且abs(N-P)<=1000。 解題思路:wiki
51Nod 1119 機器人走方格 V2 組合數學 費馬小定理
素數 實現 逆元 整數 要求 合數 init sin 排列組合 51Nod 1119 機器人走方格 V2 傳送門 高中的排列組合應該有講過類似的題,求路徑條數就是C(m+n-2,n-1) 想法很簡單,問題是怎麽實現……這裏要用到費馬小定理,用到逆元 費馬小定理:假如p是素數
HDU 5201 The Monkey King(組合數學)(隔板法+容斥定理+費馬小定理)
逆元 cst 大於 ont amp space pro http strong http://acm.hdu.edu.cn/showproblem.php?pid=5201題意:給你n個桃子要你分給m只猴子,猴子可以得0個桃子,問有多少種方法,但是有一個限制條件: 第一只猴
【bzoj5118】Fib數列2 費馬小定理+矩陣乘法
n-2 fin 描述 print std fine ont str CP 題目描述 Fib定義為Fib(0)=0,Fib(1)=1,對於n≥2,Fib(n)=Fib(n-1)+Fib(n-2) 現給出N,求Fib(2^n). 輸入 本題有多組數據。第一行一個整
費馬小定理
out urn long clas cout spa nbsp pre gpo 計算分數n/m對c取模 long long int c; long long int quick(long long int n,long long int m) { lon
hdu 3037 費馬小定理+逆元求組合數+Lucas定理
void log 打表 數學 mod turn ret iostream toc 組合數學推推推最後,推得要求C(n+m,m)%p 其中n,m小於10^9,p小於1^5 用Lucas定理求(Lucas定理求nm較大時的組合數) 因為p數據較小可以直接階乘打表求逆元