输入一个long型整数
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
180
2 2 3 3 5
题目链接
#include<stdio.h>
#include<math.h>
int main()
{
//2ms
long num;
while (scanf("%ld",&num)!=EOF)
{
long sqrtNum = sqrt(num); //质因子肯定是<=sqrt(num)
for (int i=2; i<=sqrtNum; i++)
{
//此处是while,把a整除结束才可加1
while(num%i==0)
{
printf("%ld ",i);
num /= i;
}
}
if (num>1)
printf("%ld ",num);
}
return 0;
}
下面是一个超时代码
#include <stdio.h>
int main()
{
//代码超时
long num;
scanf("%ld",&num);
for(int i=2;i<=num;)
{
if(num%i==0)
{
printf("%ld ",i);
num/=i;
}
else i++;
}
return 0;
}