我的判断,是否为超级素数应该放哪

#include<stdio.h>
#include<math.h>
int prime(int m)
{
int i,k;if(m!=0)
k=(int)sqrt(m);
for ( i = 2; i <=k; i++)
{
if (m%i==0)
break;
}
if(i>k)
return 1;
else
return 0;
}
int super(int u)
{
int a,b,c;
int flag=0;
a=prime(u/1%10);
b=prime(u/10%10);
c=prime(u/100%10);
if(u<8&&a==1)
return 1;
if ((u/10%10)!=0)
{
if(a==0)flag++;if (b==0)flag++;if(c==0)flag++;
if(flag==0)return 1;
else return 0;
}

}
void main()
{
int i,j,m;
for ( i = 2; i <1000; i++)
{
j=prime(i) ;
if (j==1)
{
m=super(i);
if (m==1)
{printf("%4d",i);}
else continue;
}
else continue;

}

}

超级素数的逻辑判断有点问题,修改了下你的代码

#include<stdio.h>
#include<math.h>
int prime(int m) {
    int i, k;
    if(m != 0)
        k = (int)sqrt(m);
    for ( i = 2; i <= k; i++) {
        if (m % i == 0)
            break;
    }
    if(i > k)
        return 1;
    else
        return 0;
}
int super(int u) {
    while(u != 0) {
        if(prime(u)) {
            u /= 10;
        } else {
            return 0;
        }
    }
    return 1;
}
int main() {
    int n;
    printf("请输入n:");
    scanf("%d", &n);
    if(super(n)) {
        printf("yes");
    } else {
        printf("no");
    }
    return 0;
}