题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
这道题第一思路是直接用除过的数去逐个找因数,而且因数因为只除一次所以必然是质数。
但是当遇到较大的数时会出现超时,原因是如果是一个较大的质数的话,要找到他自己本身要花费许多空余的循环。
根据解题思路提醒,加了一个if判断。即质因数小于该数的平方根。那么对于较大的质数来说如果,i=sqrt(n)还不能把被整除,说明它没有除自身以外的质因数了,所以就直接令它除以自身。
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
if(i>sqrt(n)) i=n;
//质数5的平方根大于质数2,3大于5的平方根。
//一个数的质因数除了自身外,都小于其平方根。
while(n%i==0)
{
n/=i;
printf("%d ",i);
}
}
return 0;
}
OPPO公司福利 1202人发布
查看10道真题和解析