【蓝桥杯】分解质因数
【蓝桥杯】分解质因数
题目链接:
https://www.dotcpp.com/oj/problem1464.html
题解:
本来想的是先用素筛过一遍数据规模中的数,但是整了半天素筛好像有问题。。。搞不懂在哪里
然后突然又忘了质因数是什么,查百度百科😂
质因数:每个合数都可以写成几个质数(也可称为素数)相乘的形式 [2] ,这几个质数就都叫做这个合数的质因数。
发现下面的C++方法写的很好,代码很精简,于是乎先不管三七二十一改写一下,先把题交了哈哈

AC代码:
#include <iostream>
using namespace std;
int main()
{
int a,b,t;
cin>>a>>b;
for(int i=a;i<=b;i++){
cout<<i<<"=";
t=i;
for(int j=2;j*j<=t;j++){
while(t%j==0){
t/=j;
cout<<j;
if(t!=1)cout<<"*";
}
}
if(t!=1)cout<<t;
cout<<endl;
}
return 0;
}
但是,还是对其中的for,while循环有点迷。
第一个for循环是遍历数据范围中的每一个数,那第二个for和while是干吗的呢?
**于是我准备跑个数字看一看: ** 24
| j | t | console |
|---|---|---|
| 2 | 12 | 24=2* |
| 2 | 6 | 24=2*2* |
| 2 | 3 | 24=2*2*2* |
| 3 | 1 | 24=2*2*2*3 |
似乎有点明白了,但是还是晕晕乎乎的,大致就是说,先一直除2,不行了再除3....依次除吧。
道生一,一生二,二生三,三生万物。

浙公网安备 33010602011771号