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

所属分类: 软件编程 / C 语言 阅读数: 42
收藏 0 赞 0 分享

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++ string字符串类

这篇文章主要介绍了C++ string字符串类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

C++单例类模板详解

这篇文章主要介绍了C++单例类模板,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

C语言实现数据结构迷宫实验

这篇文章主要为大家详细介绍了C语言实现数据结构迷宫实验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C语言数据结构之迷宫问题

这篇文章主要为大家详细介绍了C语言数据结构之迷宫问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C语言数据结构之迷宫求解问题

这篇文章主要为大家详细介绍了C语言数据结构之迷宫求解问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C语言实现小学生考试系统

这篇文章主要为大家详细介绍了C语言实现小学生考试系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C语言实现小学生随机出题测试计分

这篇文章主要为大家详细介绍了C语言实现小学生随机出题测试计分,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

C语言实现小学生计算机辅助教学系统

这篇文章主要为大家详细介绍了C语言实现小学生计算机辅助教学系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现

这篇文章主要介绍了C++中构造函数,拷贝构造函数和赋值函数的区别和实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

C语言清除scanf()缓存的案例讲解

今天小编就为大家分享一篇关于C语言清除scanf()缓存的案例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享
查看更多