分解质因数没问题,但是第48项算错了(应该是512559680, 但我算出来是4807526976),为啥会这样(其他点都过了)。unsigned long long 应该够的啊。。。
#include<iostream>
using namespace std;
typedef long long ll;
ll f1 = 1, f2 = 1, f3;
int f = 1;
int is_prime(ll n){
if(n == 1) return 0;
for(int i = 2; i * i <= n; i++)
if(n % i == 0) return 0;
return 1;
}
void fenjie(ll n){
// cout << "n = " << n << endl;
if(n == 1) return;
if(f) f = 0;
else cout << "*";
if(is_prime(n)){
cout << n;
return;
}
else{
int i = 2;
while(n % i != 0) i++;
cout << i;
fenjie(n / i);
}
}
int main(){
int n;
cin >> n;
for(int i = 3; i <= n; i++){
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
cout << f3 << "=";
fenjie(f3);
return 0;
}