题解 | #质数因子#

质数因子

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

基本解法和评论区一致,主要是解决超时的问题
1.不需要判断是否是质数
2.减小程序运行时间,缩小for循环的执行次数,改条件i<=n为i*i<=n,因为如果质数因子大于n的平方根,那么被因子整除后,结果比上一个质因子更小了。
但i*i<=n也会出现问题,就是当n成为质数本身的时候,不满足此条件,而此时仍然需要输出n,于是在for后补充一行,判断for循环是否拆分完了n,如果for循环已经
把n除到了1,那么已经拆分完毕,如果没有,那么剩余的最后一个质因子就是n本身
#include<stdio.h>
int main(void)
{
    int n;
    scanf("%d",&n);
    int i=2;
        for(i=2;i*i<=n;i++)
        {
            //不用判断是否是质数,例如,如果i加到4,4一定不可以整除此时的n,如果可以整除,4作为合数,一定有2~4(开区间)之间的
            //因子,而此区间的数都比4小,在i递增的过程中已经遍历过,把所有可以整除n的都筛选出来了,所以不需要判断是否是质数。
                while(n%i==0)
                {
                   printf("%d ",i);
                    n/=i;
                   
                }
        }
    if(n!=1){printf("%d",n);}
    return 0;
}
全部评论

相关推荐

07-10 14:08
已编辑
江西农业大学 Java
拒绝无效加班的小学生...:期望3k吗?java这辈子有了
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务