2016-08-26 6 views
0

Die Eingabe zeigt keine Tests an, gefolgt von der Größe des Eingabearrays, gefolgt vom Array, und die Ausgabe gibt entweder -1 oder das Quadrat der größten Primzahl im angegebenen Array zurück. Ich stelle den Code und die erwartete und tatsächliche Ausgabe zusammen mit der Standardeingabe zur Verfügung.Keine gewünschte Ausgabe. Ist etwas in der Logik falsch?

standard input: 
3 
5 
1 4 6 8 10 
3 
2 2 9 
2 
156 13 

expected output | getting 
-1    -1 
4     4 
169    -1 


#include <stdio.h> 
int main(){ 
int test,size; 
int i,j; 
scanf("%d\n",&test); 
while(test>=1){ 
    scanf("%d\n",&size); 
    int data[size],factors=0,max=0; 
    for(i=0;i<size;i++){ 
     scanf("%d ",&data[i]); 
     for(j=1;j<=data[i];j++){ 
      if(data[i]%j==0){ 
       factors+=1; 
      } 
     } 
     if((factors==2) && (data[i]>max)){ 
      max=data[i]; 
     } 
    } 
    if(max>=2){ 
     printf("%d\n",max*max); 
    }else{ 
     printf("%d\n",-1); 
    } 
    max=0; 
    test-=1; 
    } 
} 

Antwort

0

ok debuggte und bekam die Antwort. Faktoren müssen innerhalb der nächsten for-Schleife initialisiert werden.