UVAオンライン プログラミング コンテストに参加し、UVA 583 (Prime Factors) の解決に取り組んでいます。
私は最近、このための 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;
}