蓝桥杯 基础练习 BASIC-16 分解质因数

试题 基础练习 基础练习 分解质因数

资源限制
时间限制:1.0s 内存限制:512.0MB

问题描述
求出区间[a,b]中所有整数的质因数分解。

输入格式
输入两个整数a,b。

输出格式
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)

样例输入
3 10

样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5

提示
先筛出所有素数,然后再分解。

数据规模和约定
2<=a<=b<=10000

Python 代码

def c_nums():
    """
    找出[2,end)中所有素数
    """
    for i in range(2, end + 1):
        is_prime = True
        for j in range(2, i):
            if i % j == 0:
                is_prime = False
                break
        if is_prime:
            nums.append(i)


def print_num(n):
    """
    输出每个数所对应的一行,如2=2
    """
    s = str(n) + '='
    for i in nums:
        while n % i == 0:
            n = int(n / i)
            s += str(i) + '*'
    print(s[:-1])


nums = []
start, end = map(eval, input().split())
c_nums()
for num in range(start, end + 1):
    print_num(num)

C/C++ 代码

#include

int main() {
    int start, end;
    int nums[10000], index = 0;
    int d_num;
    bool is_prime;
    scanf("%d%d", &start, &end);
    for (int num = 2; num < end; ++num) {
        is_prime = true;
        for (int i = 2; i < num; ++i) {
            if (num % i == 0) {
                is_prime = false;
                break;
            }
        }
        if (is_prime) {
            nums[index++] = num;
        }
    }
    for (int num = start; num <= end; ++num) {
        d_num = num;
        printf("%d=", d_num);
        for (int i = 0; i < index; ++i) {
            while (d_num % nums[i] == 0) {
                d_num /= nums[i];
                printf("%d%c", nums[i], d_num == 1 ? '\n' : '*');
            }
        }
    }
    return 0;
}

你可能感兴趣的:(蓝桥杯练习,算法,python,c语言,c++,数据结构)