列表

详情


HJ6. 质数因子

描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )


数据范围:

输入描述

输入一个整数

输出描述

按照从小到大的顺序输出它的所有质数的因子,以空格隔开。

示例1

输入:

180

输出:

2 2 3 3 5

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 280KB, 提交时间: 2020-11-29

#include <stdio.h>
 
int main(void){
    int n;
    while(scanf("%d", &n) == 1){
        int tmp = n;
        for(int i = 2; i * i <= tmp && n >= i; i++){
            while(n % i == 0){
                printf("%d ", i);
                n /= i;
            }
        }
        if(n - 1) printf("%d ", n);
        putchar('\n');
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-09-10

//从前面各个数循环整除到其平方根
#include<stdio.h>
#include<math.h>
int main(int argc,char* argv[])
{
    int test=2;
    int input;
    int sqrtinput;
    int temp;
    scanf("%d",&input);
    temp=input;
    sqrtinput=sqrt(input);
    while(temp !=1)
    {
        if(test>sqrt(temp))
        {
            printf("%d ",temp);
            break;
        }
        if(temp % test ==0)
        {
            temp=temp/test;
            printf("%d ",test);
        }
        else{
            test++;
        }
    }
    return 0;
}

上一题