那位大佬能指出错误 代码:
#include<iostream>
#include<math.h>
#include<set>
using namespace std;
const int N=2e7;
bool b[N],c[N];
long long s[N],a[N];
int t;
void f(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(!b[i]) s[t++]=i;
for(int j=0;s[j]<=n/i;j++)
{
b[s[j]*i]=true;
if(i%s[j]==0) break;
}
}
}
const int M=2147483648;
#define int long long//最大值为4807526976>5.12479e+008=22637*22639
signed main()
{
f(N);
set<int>l;
int n;
cin>>n;
a[1]=1;
a[2]=1;
for(int i=3;i<=n;i++) a[i]=a[i-1]+a[i-2];
long long c=a[n]%M;
for(int i=0;i<t;i++)
{
l.insert(s[i]);
}
long long e=0;
cout<<c<<"=";
if(l.find(c)!=l.end())
{
cout<<c;
return 0;
}
long long i=0;
while(c!=1&&i<=t)
{
if(c%s[i]==0)
{
if(e==0) cout<<s[i];
else cout<<"*"<<s[i];
c/=s[i];
e++;
}
else i++;
}
return 0;
}/*35*/