标签:tor sqrt data 情况 date 等于 isp factor i++
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