数学:分解质因数

这份代码在ACM中不可用

对于一个将要分解的数,我们从小到大枚举它可能被分解出来的每一个因子,从小到大枚举,这样就可以保证在分解出大的因子之前,所有的小的因子全部被除完,从而保证最终所有的因子一定是质数。

虽然分解质因数本身没有进行质数判断,但是还是求出了质因数。。哈哈

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 }

 

posted @ 2018-07-05 22:23  静听风吟。  阅读(269)  评论(0编辑  收藏  举报