我现在得做一个分解质因数的程序【很简单】,但是题目要求用freopen,我写了之后反而就没法输入输出了【就像死循环一样】,但是我也创建记事本了啊!求大佬看看代码哪错了。
#include<iostream>
#include<cmath>
#define MAXN 1000008
using namespace std;
int n,cnt=1,k;
int a[MAXN],an;
bool IsPrime(int x){
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
freopen("prim.in","r",stdin);
freopen("prim.out","w",stdout);
cin>>n;
k=n;
for(int i=2; ;i++){
if(cnt==n) break;
if(IsPrime(i)==true&&k%i==0){
a[an]=i;
an++;
k/=i;
cnt*=i;
while(true){
if(k%i!=0) break;
a[an]=i;
an++;
k/=i;
cnt*=i;
}
}
}
for(int i=0;i<=an-2;i++){
cout<<a[i]<<'*';
}
cout<<a[an-1]<<endl;
return 0;
}
谢谢!