我正在参加UVA 在线编程竞赛,并且正在研究 UVA 583(主要因素)的解决方案。
我最近为此做了一个 Java 解决方案,并被接受了。当我尝试将它翻译成 C++ 时,它总是得到 WA(“错误答案”),即使对于我制作的每个测试用例,两个程序都输出相同的答案。
谁能指出什么问题?
#include <iostream>
#include <string>
#include <cmath>
#include <stdio.h>
using namespace std;
int primes [4792];
void factorize(int x1){
int c = 0;
for(int i = 0;i<4792;i++){
int x2 = primes[i];
while(x1%x2==0){
if(c!=0)
cout<<" x ";
cout<<x2;
c++;
x1/=x2;
}
}
if(x1>1 && c!=0){
cout<<" x "<<x1;
}
if(c==0)
cout<<x1;
cout<<endl;
}
int main(){
primes[0]=2;
primes[1]=3;
int count = 2;
for(int i=5; i<46340;i+=2){
if(i%6 != 1 && i%6 != 5)
continue;
int limit = (int)sqrt((double)i);
bool isPrime = true;
for(int j=0;j<count;j++){
if(primes[j]<limit){
if(i%primes[j]==0){
isPrime = false;
break;
}
}
}
if(isPrime){
primes[count]=i;
count++;
}
}
int x = 0;
cin>>x;
while(x!=0){
string out;
cout<<x<<" = " ;
int x1 = x;
if(x<0){
cout<< "-1 x ";
x1*=-1;
}
factorize(x1);
cin>>x;
}
return 0;
}