基础练习 分解质因数

问题描述
  求出区间[a,b]中所有整数的质因数分解。
输入格式
  输入两个整数a,b。
输出格式
  每行输出一个数的分解,形如k=a1*a2*a3...(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
 1 /*
 2 2020年3月25日18:02:10
 3 蓝桥杯习题
 4 问题描述
 5   求出区间[a,b]中所有整数的质因数分解。
 6 输入格式
 7   输入两个整数a,b。
 8 输出格式
 9   每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)
10 样例输入
11 3 10
12 样例输出
13 3=3
14 4=2*2
15 5=5
16 6=2*3
17 7=7
18 8=2*2*2
19 9=3*3
20 10=2*5
21 提示
22   先筛出所有素数,然后再分解。
23 数据规模和约定
24   2<=a<=b<=10000 
25 */
26 
27 #include<iostream>
28 #include<cmath>
29 using namespace std;
30 
31 int fun(int n)
32 {
33     int m;
34     m = (int)sqrt(n);
35     int i;
36     for(i = 2; i <= m; i++)
37     {
38         if(n % i == 0)
39         return i;
40     }
41     return n;
42 }
43 
44 int main()
45 {
46     int a,b;
47     while(cin >> a >> b)
48     {
49         int i , k;
50         for(i = a; i <= b; i++)
51         {
52             int j = fun(i);
53             k = i / j;
54             cout << i << '=' << j;
55             while(k > 1)
56             {
57                 j = fun(k);
58                 k = k / j;
59                 cout << '*' << j;
60             }
61             cout << endl;
62         }
63     }
64     return 0;
65 }

网上大佬做法真的服了!

/*2020年3月25日18:08:39 
判断素数
输入一个整数
输出是否 
*/

#include<iostream>
#include<cmath>
using namespace std;

int isPrime(int n)
{
    int m;
    m = (int)sqrt(n);
    int i;
    for(i = 2; i <= m; i++)
    {
        if(n % i == 0)
        break;
    }
    //如果i全部不能被n整除,i就变成m+1,所以要判断i是否大于m
    if(i > m)
    return 1;
    else
    return 0; 
}

int main()
{
    int num;
    while(cin >> num)
    {
        if(isPrime(num))
        cout << num << "是素数!" << endl;
        else
        cout << num << "不是素数!" << endl;
    }
    return 0;
 } 

我这条咸鱼终于把素数判断弄懂了。

原文地址:https://www.cnblogs.com/wlyperfect/p/12568585.html