C++中约数定理的实例详解

 更新时间:2017年07月08日 10:33:27   投稿:lqh  
这篇文章主要介绍了C++中约数定理的实例详解的相关资料,需要的朋友可以参考下

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; 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • C++获取MD5算法实现代码

    C++获取MD5算法实现代码

    这篇文章主要介绍了C++获取MD5算法实现代码,这个是网上扒下来的 作者已经无法知道是谁了 ,可以备用
    2019-04-04
  • C++ 获取URL内容的实例

    C++ 获取URL内容的实例

    这篇文章主要介绍了C++ 获取URL内容的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C语言 栈的表示和实现详细介绍

    C语言 栈的表示和实现详细介绍

    这篇文章主要介绍了C语言 栈的表示和实现详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • C++实现LeetCode(150.计算逆波兰表达式)

    C++实现LeetCode(150.计算逆波兰表达式)

    这篇文章主要介绍了C++实现LeetCode(150.计算逆波兰表达式),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 详解C/C++高精度算法的简单实现

    详解C/C++高精度算法的简单实现

    这篇文章主要为大家详细介绍了C/C++中高精度算法(加减乘除)的简单实现,方便以后需要时拷贝使用。感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C++ Boost.Signals2信号/槽概念

    C++ Boost.Signals2信号/槽概念

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-12-12
  • C语言全面梳理文件操作方法

    C语言全面梳理文件操作方法

    这篇文章主要为大家详细介绍了C语言的文件操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-05-05
  • Qt控件点击消息获取的方法详解

    Qt控件点击消息获取的方法详解

    本文将利用Qt中的QLabel、QPushButton这两个控件,为大家详细介绍一下Qt控件点击消息获取的方法,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-06-06
  • C++判断子序列题目详解

    C++判断子序列题目详解

    这篇文章主要为大家介绍了C++判断子序列题目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • C++实例输入多行数字到数组

    C++实例输入多行数字到数组

    这篇文章主要介绍了C++实例输入多行数字到数组的相关资料,这里提供实例代码帮助大家学习理解,需要的朋友可以参考下
    2016-12-12

最新评论