中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中約數定理的實例詳解

發布時間:2020-10-07 07:45:55 來源:腳本之家 閱讀:161 作者:lqh 欄目:編程語言

C++中約數定理的實例詳解

對于一個大于1正整數n可以分解質因數:n = p1^a1*p2^a2*......pk^ak,則n的正約數的個數就是  :(a1+1)*(a2+1)*......*(ak+1)

其中a1、a2、a3…ak是p1、p2、p3,…pk的指數。

用這個定理求一個數的約數個數是非常快的,貼出一道訓練題目:

hdu 1492 -求約數的個數

貼出代碼:

//約數定理的 
#include <iostream> 
#include <algorithm> 
#include <iterator> 
#include <cstdio> 
#include <cstdlib> 
#include <cmath> 
#include <cstring> 
#include <vector> 
#include <queue> 
#include <set> 
using namespace std; 
 
#define ll long long 
 
int main() 
{ 
  // freopen("s.cpp","r",stdin); 
 
  ll n; 
  while(scanf("%lld",&n) != EOF) 
  { 
    if(!n) break; 
 
    ll sum = 1; 
    /* x = p1^a1*p2^a2*p3^a3...pk^ak 
    yueshu = (a1+1)*(a2+1)*...*(ak+1)*/ 
    for(ll i = 2; i*i <= n; i++){ 
      int cou = 0; 
      if(n%i==0){ 
        cou = 1; 
        n /= i; 
        while(n%i==0){ 
          cou++; 
          n /= i; 
        } 
      } 
      if(cou != 0){ 
        sum = sum*(cou+1); 
      } 
    } 
    if(n != 1){ 
      sum = sum*2; 
    } 
    if(sum==1 && n==1){ 
      sum = 1; 
    } 
    printf("%lld\n",sum); 
  } 
  return 0; 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东山县| 礼泉县| 亳州市| 安泽县| 胶州市| 华安县| 上栗县| 武平县| 泰顺县| 哈尔滨市| 祁门县| 马鞍山市| 上栗县| 古交市| 庆城县| 信阳市| 泾源县| 东莞市| 丰镇市| 梅州市| 巴林左旗| 通山县| 林西县| 墨脱县| 溧阳市| 建始县| 罗江县| 仲巴县| 拜泉县| 新河县| 上虞市| 西华县| 宁德市| 上杭县| 长子县| 中宁县| 西充县| 禹城市| 旌德县| 文水县| 和田市|