unsigned int 型(符号なし32 ビット整数)の範囲内で最大の素数を表示するプログラムを書いているのですが、
出力される値がおそらく素数ではありません。
4294967291と出力されて正解だと思うのですが、4294967295が出力されます。
どこに問題があるか、教えて欲しいです。よろしくお願いします。

#include <stdio.h>
#include <math.h>
#include <limits.h>
int main(void)
{
long int i, n, m, Limit;
int b = 0;

while(1){
Limit=(long int)sqrt(UINT_MAX-b);
m=UINT_MAX-b;
for(i=Limit;i>1;i--){
if(m%i == 0)
break;
}
if(i==1){
printf("%u\n",UINT_MAX-b);
break;}
else
b+=1;
}

return 0;
}