题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

改进了一下超时的代码,进入for循环之后立刻判断此时的n是不是素数 如果是素数直接打印n跳出循环就好了 不需要从2一直加到n
#include <stdio.h>
#include <math.h>
int func(int x)
{
    int flag=1;
    for(int i=2;i<=sqrt(x);i++)
    {
        if(x%i==0)
        {
            flag=0;
            break;
        }
    }
    return flag;
}
int main() {
    int n;
    scanf("%d", &n);
    if (n == 1) {
        printf("1");
    } else {
        for (int i = 2; i <= n; i++) {
            if(func(n))
            {
                printf("%d",n);
                break;
            }
            while (n % i == 0) {
                printf("%d ", i);
                n /= i;
            }
        }
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务