题解 | #质数因子#

质数因子

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

解题思路:

  1. 质数:满足质数(>1的自然数且不能被1和本身以外的自然数整除),则i从2开始;
  2. 从小到大且重复列举:i++;
  3. 质因数:(假设输入被除数为num)
    • 比被除数小:i<num
    • 商大于除数i:注意寻找除数时,最大除数应满足i<=num^0.5,否则商必然小于当前除数
  4. 执行过程:
    • 获取因数:每次做除法后,将整除的商作为下一次被除数num,则num/=i
    • 保证重复整除:while循环判断num%i==0
    • 输出较大除数:for循环结束后,加入判断if(n-1),执行若num值为1,则表示已输出所有质因数,否则直接输出该数为质因数
  5. 准备下次接收:结尾换行,准备下次接收。
#include<stdio.h>
 
int main() 
{
    int num = 0;
    while (~scanf("%d", &num))	//有输入时进入该while循环
    {
        int tmp = num;
        for (int i = 2; i <= sqrt(tmp) && i <= num; i++)
        {
            while (num % i == 0)   //用if同个质因数只除1次,则用while
            {
                printf("%d ", i);   //输出重复质因子
                num /= i;
            }
        }
        if (num - 1)    //i > sqrt(tmp)时输出,i <= sqrt(tmp)时while已输出此处不输出
        {
            printf("%d ", num); //输出> sqrt(tmp)的质因子
        }
        putchar('\n');
    }
    return 0;
}
全部评论

相关推荐

珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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