首页 > 其他 > 详细

求约数个数(模板)

时间:2020-02-04 16:34:20      阅读:66      评论:0      收藏:0      [点我收藏+]

整数的唯一分解定理

对于一个大于1正整数n可以分解质因数

技术分享图片

 

约数个数

技术分享图片

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

eg:

给定n个正整数aiai,请你输出这些数的乘积的约数个数,答案对109+7取模。

输入格式

第一行包含整数n。

接下来n行,每行包含一个整数aiai。

输出格式

输出一个整数,表示所给正整数的乘积的约数个数,答案需对109+7109+7取模。

数据范围

1n1001≤n≤100,
1ai21091≤ai≤2∗109

输入样例:

3
2
6
8

输出样例:

12

代码:
import java.util.*;
public class Main{
        static final int N=(int)1e9+7;
        static Map<Integer, Integer> map=new HashMap<Integer, Integer>();
        static int t;
        public static void main(String[] args) {
                Scanner scan=new Scanner(System.in);
                t=scan.nextInt();
                while(t-->0){    
                       //求解每个质因子的指数
                        int n=scan.nextInt();
                        for(int i=2;i<=n/i;i++){
                                if(n%i==0){
                                    while(n%i==0){
                                        n/=i;
                                        if(map.get(i)==null) map.put(i, 1);
                                            else map.put(i, map.get(i)+1);
                                    }
                                }
                        }
                        if(n>1) {
                            if(map.get(n)==null) map.put(n, 1);
                            else map.put(n, map.get(n)+1);
                        }
                }
                //求约数个数
                long res=1;
                Set<Integer> key=map.keySet();
                Iterator<Integer> it=key.iterator();
                while(it.hasNext()){
                     int s=it.next();
                     res=res*(map.get(s)+1)%N;
                }
                System.out.println(res);
                
        }
}

 

 

求约数个数(模板)

原文:https://www.cnblogs.com/qdu-lkc/p/12259725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!