这个程序为什么没输出呢?

/* 函数06:超级素数
超级素数的定义:
一个素数,依次从最低位去掉一位,两位……
若得到的都是素数,且各数字不为0,则称为超级素数。
编写程序求a~b之间超级素数的个数。
a,b由键盘输入
比如:237,23 ,2 都是素数,所以237是超级素数*/
#include<iostream>
#include<cmath>
using namespace std;

bool IsPrime(long);
bool IsSuperPrime(long);
int main()
{   long i,j,k;
    int a,b,n=0;
    cin>>a>>b;
    for(i=a;i<=b;i=i+1)
        if(IsSuperPrime(i))
           {   n++;
               if(n%5!=0) cout<<i<<",";
               else cout<<i<<endl;
            }


}
bool IsPrime(long i)
{
        if(i==1)
        return false;
        int j;
        for(j=2;j<i/2+i;j++)
        {if(i%j==0)
        return false;}
        return true;
}
bool IsSuperPrime(long i)
{
    while(i>0)
    {
        if(!IsPrime(i))
            return false;
        if(i%10==0)
            return false;
        i=i/10;
    }
    return true;
}




/* 函数06:超级素数
超级素数的定义:
一个素数,依次从最低位去掉一位,两位……
若得到的都是素数,且各数字不为0,则称为超级素数。
编写程序求a~b之间超级素数的个数。
a,b由键盘输入
比如:237,23 ,2 都是素数,所以237是超级素数*/
#include<iostream>
#include<cmath>
using namespace std;

bool IsPrime(long);
bool IsSuperPrime(long);
int main()
{
    long i;
    int a, b, n = 0;
    cin >> a >> b;
    for (i = a; i <= b; i = i + 1)
        if (IsSuperPrime(i))
        {
            n++;
            if (n % 5 != 0) cout << i << ",";
            else cout << i << endl;
        }


}
bool IsPrime(long i)
{
    if (i == 1)
        return true;
    int j;
    for (j = 2; j<i / 2 + 1; j++)
    {
        if (i%j == 0)
            return false;
    }
    return true;
}
bool IsSuperPrime(long i)
{
    while (i>0)
    {
        if (IsPrime(i))
        {
            if (i % 10 == 0)
                return false;
            i = i / 10;
        }
        else
            return false;
    }
    return true;
}

//237不是超级素数,他是3的倍数

你代码逻辑有问题

/* 函数06:超级素数
超级素数的定义:
一个素数,依次从最低位去掉一位,两位……
若得到的都是素数,且各数字不为0,则称为超级素数。
编写程序求a~b之间超级素数的个数。
a,b由键盘输入
比如:237,23 ,2 都是素数,所以237是超级素数*/
#include<iostream>
#include<cmath>
using namespace std;

bool IsPrime(long);
bool IsSuperPrime(long);
int main()
{
    long i, j, k;
    int a, b, n = 0;
    cin >> a >> b;
    for (i = a; i <= b; i = i + 1)
        if (IsSuperPrime(i))
        {
            n++;
            if (n % 5 != 0) cout << i << ",";
            else cout << i << endl;
        }


}
bool IsPrime(long i)
{
    if (i <= 2)
        return false;
    int j;
    for (j = 2; j * j <= i; j++)
    {
        if (i % j == 0)
            return false;
    }
    return true;
}
bool IsSuperPrime(long i)
{
    if (i == 0)
        return false;
    while (i != 0)
    {
        if (!IsPrime(i))
            return false;
        if (i % 10 == 0)
            return false;
        i = i / 10;
    }
    return true;
}

我简化了一下代码实现,可供题主参考:
代码实现:

#include<stdio.h>
int isPrime(int n)
{
    int i;
    for (i = 2; i < n; i++)
    {
        if (n%i == 0)
            return 0;
    }
    return 1;
}
int main()
{
    int t;
    int a,b,flag=0;
    scanf("%d%d",&a,&b);
    for (int i = a; i < b; i++)
    {
        t = i;
        while (t)
        {
            if (!isPrime(t))
                break;
            t = t / 10;
        }
        if (t == 0){
            printf("%5d", i);
            flag++;
                if(flag%5==0)
                    printf("\n");
        }
    
            
    }
     
    return 0;
}

运行结果:

img