对于一个将要分解的数,我们从小到大枚举它可能被分解出来的每一个因子,从小到大枚举,这样就可以保证在分解出大的因子之前,所有的小的因子全部被除完,从而保证最终所有的因子一定是质数。
虽然分解质因数本身没有进行质数判断,但是还是求出了质因数。。哈哈
while(n!=1) { for(int i=2;i<=n;i++) { if(n%i==0) { n/=i; printf("%d",i); if(n!=1)printf("*"); break; } } }
通过代码可以看到,我们每分解出来一个因子之后,还是从最小的2继续枚举,从而保证分解的顺利进行,2被一个一个剔出来,全部剔完了之后就该剔3了。
完整的代码如下,T组数据每组数据一个n,对n进行分解质因数。
1 #include <cstdio> 2 #include<iostream> 3 using namespace std; 4 int n; 5 int T; 6 int main() 7 { 8 cin>>T; 9 while(T--) 10 { 11 scanf("%d",&n); 12 //printf("%d=",n); 13 while(n!=1) 14 { 15 for(int i=2;i<=n;i++) 16 { 17 if(n%i==0) 18 { 19 n/=i; 20 printf("%d",i); 21 if(n!=1)printf("*"); 22 break; 23 } 24 } 25 } 26 cout<<endl; 27 } 28 return 0; 29 }
原文:https://www.cnblogs.com/aininot260/p/9270842.html