您当前的位置: 首页 >  华为
  • 1浏览

    0关注

    880博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【华为机试题分析】 6 质数因子

CodeAllen嵌入式编程 发布时间:2022-06-29 17:06:20 ,浏览量:1

描述

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

输入描述:

输入一个整数

输出描述:

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

示例1

输入:180

输出:2 2 3 3 5

首先收下概念,质因数(或质因子)在数论里是指能整除给定正整数的质数,每个合数都可以写成几个质数相乘的形式,那么这几个质数就都叫做这个合数的质因数,比如10=2×5,那么2和5就是10的质数因子。

思路1:最大质因数必小于输入数字的平方根

#include 
#include 

int main() {
    int a, b, i = 0;
    scanf("%d", &a);
    for (b = 2; b  sqrt(a) + 1) {
            b = a;
        }
        while (a % b == 0) {
            printf("%d ", b);
            a = a / b;
        }
    }
    return 0;
}

思路2:如果一个数在它的根号左边或右边没有质数,那么这个数的质数只有1和它本身

#include 
#include 

int main() {
    long int n;
    scanf("%ld", &n);
    int i = 2;
    int j = 0;
    for (; i             
关注
打赏
1665938897
查看更多评论
0.0464s