题目:
第一次TLE了
TLE代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool jg(ll x)
{
for(ll i=2;i<=sqrt(x);i++)
{
if(x%i==0) return false;
}
return true;
}
int main()
{
ll a,b;
cin>>a>>b;
for(ll i=a;i<=b;i++)
{
cout<<i<<"=";
ll p=i;
while(p!=1)
{
for(ll j=2;j<=p;j++)
{
if(jg(j)&&p%j==0)
{
cout<<j;
if(p/j!=1) cout<<"*";
p/=j;
break;
}
}
}
cout<<endl;
}
return 0;
}
第二次优化后省去了一个循环嵌套,AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool jg(ll x)
{
for(ll i=2;i<=sqrt(x);i++)
{
if(x%i==0) return false;
}
return true;
}
int main()
{
ll a,b;
cin>>a>>b;
for(ll i=a;i<=b;i++)
{
if(jg(i)) cout<<i<<"="<<i<<endl;
else
{
cout<<i<<"=";
ll p=i;
ll j=2;
while(p!=1)
{
if(jg(j)&&p%j==0)
{
cout<<j;
if(p/j!=1) cout<<"*";
p/=j;
}
else
{
j++;
}
}
cout<<endl;
}
}
return 0;
}