青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 97, 文章 - 22, 評論 - 81, 引用 - 0
數據加載中……

Pku 3209 From Pythagoras to …(數論)

問題描述:
給定一個數,問它是否能夠表示成兩個整數的平方和。
解題思路:
費馬平方和定理的表述是:奇素數能表示為兩個平方數之和的充分必要條件是該素數被4除余1。
于是一個素數p = 4n+1或者p = 2則必定能表示成兩個平方數之和。
同樣可以推導出如果兩個數均能表示成兩個平方數之和,則他們的乘積必定能表示成兩個平方數之和:
p = a^2 + b^2;
q = c^2 + d^2;
p*q = (a^2 + b^2)(c^2 + d^2) = (ac)^2 + (ad)^2 + (bc)^2 + (bd)^2 = (ac + bd)^2 + (ac - bd)^2
只要將所求數分解素因子,然后對于每個素數看是否滿足條件,一旦有一個素因子不滿足費馬平方和定理則直接輸出"NO",全部滿足則輸出"YES"

代碼如下:

#include 
<iostream>
#include 
<cstdlib>
#include 
<cmath>
#define gcc 10007
typedef __int64 Int;
#define MAX ((Int)1<<63)-1

using namespace std;

Int p[
10= {2357111317192329};

Int Gcd(Int a, Int b)
{
    Int m 
= 1;
    
while(m)
    
{
        m 
= a % b;
        a 
= b;
        b 
= m;
    }

    
return a;
}


//計算a*b%n
inline Int Produc_Mod(Int a, Int b, Int mod)
{
    Int sum 
= 0;
    
while(b)
    
{
        
if(b & 1) sum = (sum + a) % mod;
        a 
= (a + a) % mod;
        b 
/= 2;
    }

    
return sum;
}


//計算a^b%n
inline Int Power(Int a, Int b, Int mod)
{
    Int sum 
= 1;
    
while(b)
    
{
        
if(b & 1) sum = Produc_Mod(sum, a, mod);
        a 
= Produc_Mod(a, a, mod);
        b 
/= 2;
    }

    
return sum;
}


//Rabin_Miller判素
bool Rabin_Miller(Int n)
{
    
int i, j, k = 0;
    Int u, m, buf;
    
//將n-1分解為m*2^k
    if(n == 2)
        
return true;
    
if(n < 2 || !(n & 1))
        
return false;
    m 
= n-1;
    
while(!(m & 1))
    
{
        k
++;
        m 
/= 2;
    }

    
for(i = 0; i < 9; i++)
    
{
        
if(p[i] >= n)
            
return true;

        u 
= Power(p[i], m, n);
        
if(u == 1)
            
continue;
        
for(j = 0; j < k; j++)
        
{
            buf 
= Produc_Mod(u, u, n);
            
//看是否有非平凡因子存在
            if(buf == 1 && u != 1 && u != n-1)
                
return false;
            u 
= buf;
        }

        
//如果p[i]^(n-1) % n != 1 那么 n為合數
        if(u-1)
            
return false;
    }

    
return true;
}


Int Pollard_rho(Int n)
{
    
while(1)
    
{
        
int i = 1;
        Int x 
= rand() % (n-1+ 1;
        Int y 
= x;
        Int k 
= 2;
        Int d;
        
do{
            i
++;
            d 
= Gcd(n + y - x, n);
            
if(d > 1 && d < n)
                
return d;
            
if(i == k)
                y 
= x, k *= 2;
            x 
= (Produc_Mod(x, x, n) + n - gcc) % n;
        }
while(y != x);
    }

}


Int prime[
10000];
int top;

void Prime_Divisor(Int key)
{
    
if( Rabin_Miller(key) )
    
{
        prime[ top 
++ ] = key;
    }
else
    
{
        Int buf 
= Pollard_rho(key);

        
if( Rabin_Miller(buf) ){
            prime[ top 
++ ] = buf;
        }
else{
            Prime_Divisor(buf);
        }



        
if( Rabin_Miller(key / buf) ){
            prime[ top 
++ ] = key / buf;
        }
else{
            Prime_Divisor(key 
/ buf);
        }

    }

}

int main()
{
    
int t, i;
    Int n;
    scanf(
"%d"&t);
    
while(t--)
    
{
        scanf(
"%I64d"&n);
        
if(n < 0)
            printf(
"NO\n");
        
else if(n == 0 || n == 1)
            printf(
"YES\n");
        
else 
        
{
            top 
= 0;
            Prime_Divisor(n);

            
for(i = 0; i < top; i++)
                
if( prime[i] != 2 && (prime[i] - 1% 4 )
                    
break;
            
if(i < top)
                printf(
"NO\n");
            
else
                printf(
"YES\n");
        }

    }

}

posted on 2009-02-10 21:04 英雄哪里出來 閱讀(386) 評論(0)  編輯 收藏 引用 所屬分類: ACM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩精品免费在线观看视频| 久久久99免费视频| 国产精品看片你懂得| 欧美日韩精品福利| 欧美日韩亚洲一区二区| 国产精品成人观看视频免费| 国产精品久久久久久av下载红粉| 国产精品一区二区久激情瑜伽| 国产精品永久免费视频| 国产亚洲福利社区一区| 亚洲成人在线网| 宅男在线国产精品| 欧美在线三级| 欧美国产日韩一区二区| 99re8这里有精品热视频免费 | 在线播放不卡| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品极品| 欧美一区二视频| 欧美高清视频一区二区| 亚洲天堂偷拍| 欧美成人精精品一区二区频| 国产精品va在线播放| 一区二区三区在线观看国产| 一区二区三区四区蜜桃| 毛片av中文字幕一区二区| 99综合电影在线视频| 久久久久久精| 国产精品一区视频网站| 亚洲精品视频啊美女在线直播| 国产精品久久一区二区三区| 国产综合色产| 亚洲影视在线播放| 欧美jizz19hd性欧美| 亚洲中午字幕| 欧美日韩精品一区视频| 激情五月婷婷综合| 欧美一区二区高清| 亚洲精品字幕| 男男成人高潮片免费网站| 久久国产天堂福利天堂| 亚洲第一精品福利| 性做久久久久久久久| 欧美激情中文字幕乱码免费| 午夜日本精品| 国产精品一区一区| 亚洲综合成人婷婷小说| 日韩视频三区| 欧美日韩亚洲精品内裤| 亚洲精品免费网站| 亚洲国产成人av| 久久久久久久一区| 激情国产一区| 欧美~级网站不卡| 久久久久久久久久久久久9999| 国产伦精品一区二区三区免费 | 亚洲一区国产| 99在线精品免费视频九九视| 欧美日本一道本在线视频| 最新高清无码专区| 亚洲国产一区二区三区a毛片| 噜噜噜91成人网| 精品动漫3d一区二区三区免费版| 久久久午夜精品| 久久久综合免费视频| 狠狠色丁香婷婷综合影院| 久久手机精品视频| 老司机aⅴ在线精品导航| 亚洲国产日韩综合一区| 亚洲精品视频在线播放| 欧美日韩一区二区在线观看视频| 99国产精品国产精品毛片| 亚洲精品欧美在线| 国产精品麻豆成人av电影艾秋| 新狼窝色av性久久久久久| 欧美中文在线观看国产| 亚洲黄页一区| 亚洲网址在线| 一区在线观看| 亚洲日韩视频| 国产精品日韩在线播放| 久久男女视频| 欧美激情在线播放| 午夜亚洲精品| 女仆av观看一区| 亚洲免费在线电影| 久久精品夜色噜噜亚洲a∨| 亚洲精品久久久久中文字幕欢迎你 | 国产一区清纯| 亚洲国产黄色| 国产精品欧美日韩| 免费一级欧美片在线播放| 欧美激情精品久久久久久蜜臀 | 亚洲日本成人网| 国产精品看片资源| 久久只精品国产| 狂野欧美一区| 亚洲三级免费| 亚洲欧美电影在线观看| 亚洲韩国精品一区| 亚洲激情网站| 国产视频亚洲| 亚洲美女在线看| 国产精品欧美久久| 欧美激情视频一区二区三区不卡| 国产精品久久久久久久午夜片| 欧美二区在线看| 国产欧美高清| 在线一区视频| 夜夜狂射影院欧美极品| 久久香蕉国产线看观看av| 在线视频精品一区| 欧美成人中文字幕| 久久亚洲综合网| 国产精品你懂的在线| 亚洲免费激情| 在线视频欧美日韩| 欧美男人的天堂| 欧美福利电影在线观看| 国产麻豆精品theporn| 99精品国产在热久久婷婷| 亚洲盗摄视频| 久久亚洲综合色| 蜜桃精品一区二区三区| 国产午夜精品理论片a级大结局 | 亚洲国产欧美一区二区三区丁香婷| 亚洲欧美国产va在线影院| 9i看片成人免费高清| 久久久噜噜噜久久| 久久精品国产亚洲高清剧情介绍| 国产精品国产a| 亚洲桃色在线一区| 午夜影视日本亚洲欧洲精品| 国产精品乱码一区二区三区| 亚洲无毛电影| 久久国产精品久久久| 国语自产精品视频在线看抢先版结局 | 亚洲素人在线| 欧美成人免费va影院高清| 久久久久久网站| 国产日韩av在线播放| 亚洲一区二区av电影| 欧美一二三视频| 国产婷婷成人久久av免费高清 | 99综合电影在线视频| 久久国产99| 一区二区三区日韩在线观看| 亚洲大片av| 亚洲免费精彩视频| 欧美区在线观看| 亚洲精品午夜| 先锋a资源在线看亚洲| 国产精品国产三级国产专区53| 亚洲日本成人网| 欧美激情一区在线观看| 最新亚洲激情| 午夜在线播放视频欧美| 国产精品草草| 亚洲欧美激情四射在线日| 久久综合网hezyo| 尤物yw午夜国产精品视频| 久久这里有精品视频| 亚洲欧洲综合| 久久精品盗摄| 亚洲免费观看在线观看| 国产日韩一区二区三区| 男女精品网站| 亚洲一区二区三区国产| 美女视频黄 久久| 午夜精品视频| 亚洲黄网站在线观看| 亚洲电影一级黄| 欧美一级黄色录像| 亚洲国产欧美不卡在线观看| 欧美激情一区二区在线| 亚洲欧美日韩国产中文| 裸体歌舞表演一区二区| 亚洲天堂视频在线观看| 国产日韩欧美一区二区| 久久一区二区视频| 亚洲精品老司机| 久久国产欧美| 亚洲精品乱码久久久久久按摩观| 国产精品成人国产乱一区| 久久在线91| 99亚洲精品| 老色鬼久久亚洲一区二区| 一区二区日韩免费看| 国产亚洲欧美一级| 国产精品久久久久三级| 久久一日本道色综合久久| 一区二区三区产品免费精品久久75| 久久精品中文字幕一区| 亚洲美女毛片| 禁久久精品乱码| 国产欧美精品一区| 国产精品一区一区| 国产精品a久久久久久| 美女精品国产| 亚洲一区国产精品|