能通过编译但是没有运行结果想知道哪里错了

等差素数列(7分)
题目描述
2,3,5,7,11,13,…是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?


#include<bits/stdc++.h>
using namespace std;
long long int prime[10019];
long long isprime(long long int n){
    for( int i=2;i*i<=n;i++){
        if(n%2==0){
            return false;
        }
        return true;
    }
} 
int main(void){
    for(int i=1;i<=100009;i++){//素数打表 
        if(isprime(i)){
            prime[i]=1;
        }
        for(int i=1;i<=1000;i++){//枚举公差 
         for(int j=1;j<=8000;j++){//枚举首项
          int flag=0;
          for(int k=1;k<=9;k++){
              if(prime[j+k*i]==0){
                  flag=1;
                  break;
              }
          }    
         if(!flag){
             printf("%d",i);
             return 0;
         }
    }
}
    return 0;
}
}

谢谢大家!

第10行return true要放到for循环外面才行的。