c语言寻找[m,n]区间内所有孪生素数并输出

下面是我编的代码,不知道哪里出错,调试了半天,越调越错,求大神指点~
55555~
变了这么久的程,分马上就要用光了,只能给这么多分了,求大神不要嫌弃
#include <stdio.h>
#include <conio.h>
#include <math.h>
int prime(int n)
{
int r,t,i;
r=sqrt(n);
for(t=1,i=2;t&&i<=r;i++)
{
if(n%i==0)
{
t=0;
return 1;
}
else
return 0;
}
}
int main ()
{ int m,n,i,t=0;
printf("请输入范围m,n\n");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i+=2)
{
if (prime(i)&&prime(i+2))
{
t+=1;
printf("(%d,%d)\n",i,i+2);
}
else
printf("无孪生素数!");
}
printf("%d",t);
getch();
}
#include <stdio.h>
#include <conio.h>
#include <math.h>
int prime(int n)

  int r,i;       模滚卜  //此处定义的t不懂你有什么用,反正我没用
  r=sqrt(n);
  for(i=2;i<=r;i++)
   {  
    if(n%i==0)  //此处n%i==0,说明不是素数,立刻跳出循环,你刚好反了
       return 0;  
    } 
  旦穗  return 1; 
}
int main ()

  int m,n,i,t=0; 
  printf("请输入范围m,n\n");
  scanf("%d%d",&m,&n); 
  for(i=m;i<=n-2;i++)   //此处限制i<=n-2,不然prime(i+2)超过范备迹围;另外i每次自加1,                       //不能加2
   { 
    if (prime(i)&&prime(i+2)) 
     {  
      t+=1;  
      printf("(%d,%d)\n",i,i+2); 
     } 
   }
  printf("%d\n",t);     
  if(t==0)   
  printf("无孪生素数!");  //这个输出格式应该在循环外判定
  getch();
 }

#include <stdio.h>
#include <conio.h>
#include <math.h>
int prime(int n)
{
int r,i,flag=1;
r=sqrt(n);
for(i=2;i<=r;i++)
{
if(n%i==0)
flag=0;
}
return flag;
}
int main ()
{ int m,n,i,t=0,flag=0;
printf("请槐蚂饥输入范围物枣m,n\n");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i+=2)
{
if(prime(i)&&prime(i+2)&&(i!=1))
{
t+=1;
flag=1;
printf("铅返(%d,%d)\n",i,i+2);
}
}
if(flag==0)
printf("没有孪生素数\n");
printf("%d",t);
return 0;
}