判断素数 这样写为什么会编译错误

问题描述
素数是只能被1和自己整除的整数。例如2,3,5和7是素数,4,6,8,9不是素数。给定一个正整数,判定该整数是否为素数。

输入
第一行一个正整数T,表示有T组测试数据。以下有T行,每行有一个正整数a(a<10000)。

输出
每组测试数据输出一行,如果输入的正整数是素数,输出yes,否则输出no。

输入样列
3
2
7
9

输出样例
yes
yes
no
#include<stdio.h>
int judge(int n)
{
if(n<=1) return 0;
else{
for(int i=2;i*i<=n;i++){
if(n%i==0) return 0;
}
}
return 1;
}
int main()
{
int t,i,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(judge(n)) puts("yes");
else puts("no");
}
return 0;
}

没什么错误,int judge(int n) 函数里把 i 定义移到函数开始处,试试:

#include<stdio.h>
int judge(int n)
{
    int i;        //修改
    if(n<=1) return 0;
    else{
         for(i=2;i*i<=n;i++){ //修改
             if(n%i==0) return 0;
         }
    }
    return 1;
}
int main()
{
    int t,n; //修改
    scanf("%d",&t);
    while(t--){
          scanf("%d",&n);
          if(judge(n)) puts("yes");
          else         puts("no");
    }
    return 0;
}

#include<stdio.h>
int judge(int n)
{
if(n<=1) return 0;
for(int i=2;i*i<=n;i++){
if(n%i==0)
{
printf("no\n");

}
else
{
printf("yes\n");
}
}
return 0;
}
int main()
{
int t,i,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
judge(n);
}
return 0;
}

你试一下这样行吗