码迷,mamicode.com
首页 > 其他好文 > 详细

质因子分解

时间:2019-07-08 19:08:21      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:tor   sqrt   data   情况   date   等于   isp   factor   i++   

Date:2019-07-08 18:56:02

算法实现

 1 /*
 2 Data: 2019-05-02 21:00:39
 3 Problem:
 4 */
 5 
 6 //默认给定整数大于1,若遇到1的情况可以特判
 7 
 8 struct factor
 9 {
10     int x;  //质因子
11     int t;  //次数
12 }fac[10];       //int范围内,最多有9个不同的素数相乘
13 int pt=0;
14 /*
15 有如下定理:
16     任给整数n,如果存在[2,n]范围内的质因子
17     1.这些质因子全部小于等于sqrt(n)
18     2.有且仅有一个质因子大于sqrt(n)
19 */
20 
21 //枚举2~sqrt(n)范围内的所有素数,判断其是否是n的因子
22 for(int i=2; i<=sqrt(n); i++)
23 {   //O(n^1/2)
24     if(isPrime[i] && n%i==0)
25     {
26         fac[pt].x = i;
27         fac[pt].t = 0;
28         while(n%i == 0)
29         {
30             fac[pt].t++;        //计算该质因子的个数
31             n /= i;
32         }
33         pt++;
34     }
35 }
36 
37 if(n!=1)
38 {
39     fac[pt].x=n;        //存在大于sqrt(n)的质因子,此时n的值即为该质因子
40     fac[pt++].t=1;      //令其个数为1
41 }

 

质因子分解

标签:tor   sqrt   data   情况   date   等于   isp   factor   i++   

原文地址:https://www.cnblogs.com/blue-lin/p/11153089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!