rt,先抛开思路是否正解不谈,我调试用于筛质因数的数组里面莫名会有一些特别大的数窜出来,感觉是cpp 的什么东西出问题了,求大佬分析
#include<bits/stdc++.h>
using namespace std;
bool vis[1145],flag;
int a0,a1,b0,b1,book[1145];
void breakdown1(int s){
for(int i=2;i<=1e5&&s>1;++i){
while(s%i==0&&s>1){
book[i]++;s/=i;
}
}
}
void breakdown2(int s){
for(int i=2;i<=1e5&&s>1;++i){
if(s%i==0){
if(vis[i]){
flag=1;return;
}
vis[i]=1;
while(s%i==0&&s>1)s/=i;
}
}
}
int main(){
int T;
cin>>T;
while(T--){
memset(book,0,sizeof(book));
memset(vis,0,sizeof(vis));
cin>>a0>>a1>>b0>>b1;
breakdown1(b1/a1);
breakdown2(a0/a1);
breakdown2(b1/b0);
if(flag){
cout<<0<<endl;
continue;
}
int ans=1;
for(int i=1;i<=1e5;++i){
if(book[i]&&!vis[i]){
cout<<i<<" "<<book[i]<<endl;
ans*=book[i];
}
}
cout<<ans<<endl;
}
return 0;
}
输入样例1后就会出现上述问题