ご指摘いただきありがとうございます。
さっそく試してみたのですが、やはりダメでした。

int sosuucheck(int x){
   int w;
   for (w=2;w<x;w++)
     if(x%w==0) return 0;

   return x;
}

をやってみたのですが、実行結果は変更前と同じでした。
その実行結果なのですが、-858993460と20回表示されるのです。
先に書いておくべきだったのかもしれませんが、この数値になる理由がわかりません。
この数値は32bitのunsigned int型でも表現できないと思うのですが……