题目链接:http://vjudge.net/problem/HDU-1164
找一个数的素数因子乘积表示形式。
刚开始想打一个素数的表,然后一个个去验证。后来觉得太麻烦了。
从2开始枚举对n做除法,可以确保循环到后面能够整除的都是素数因子。
比如它有一个因子6,我们已经用2*3的形式表达了。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <algorithm> 5 6 using namespace std; 7 8 int main() 9 { 10 int n,i; 11 while(~scanf("%d",&n)) 12 { 13 for(i=2;i<=(int)sqrt((double)n);i++) 14 { 15 while(n%i==0) 16 { 17 n/=i; 18 printf("%d*",i); 19 i=2; 20 } 21 } 22 printf("%d ",n); 23 } 24 return 0; 25 }