题目大意
求出区间[a,b]中所有整数的质因数分解。
思路
先筛出所有的素数,再进行分解。
AC代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
bool isprime(int n)//快速判断素数模板
{
if(n==2||n==3)
{
return true;
}
if(n%6!=1&&n%6!=5)
{
return false;
}
int temp = (int)sqrt(n);
for(int i=5;i<=temp;i+=6)
{
if(n%i==0||n%(i+2)==0)
{
return false;
}
}
return true;
}
int main()
{
static int aa[10010]={0};
int cnt=0;
int a=0,b=0;
cin>>a>>b;
for(int i=2;i<=b;i++)
{
if(isprime(i))
{
aa[cnt]=i;
cnt++;
}
}
for(int i=a;i<=b;i++)
{
cout<<i<<"=";
int tmp=i;//这里记得一定要用tmp代替i进行运算,因为i还要控制循环,值不能轻易改变
for(int j=0;j<cnt;)
{
if(tmp%aa[j]==0)
{
tmp/=aa[j];
cout<<aa[j];
if(tmp!=1)
{
cout<<"*";
}
}
else j++;//这样写是因为有4=2*2的情况
}
cout<<endl;
}
return 0;
}