请各位帮帮忙,实在想不出来了

c语言,定义一个函数,判断一个数各个位是否都为4或7,实在想不出来怎么定义了😭
#include<stdio.h>
#include<math.h>
int Lo(int n);
int Hao(int n);
int main()
{
int T, n;
scanf_s("%d", &T);
while (T--)
{
scanf_s("%d", &n);
if (Hao(n))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
int Hao(int n)
{
int i, k;
k = 0;
for (i = 1; i <= n; i++)
{
if (Lo(i))
k = 1;
}
if (k == 1)
return 1;
else
return 0;
}
int Lo(int n)
{
int m, k = 1;
m = n;
while (m > 0)
{
if (m % 10 != 4 && m % 10 != 7)
{
k = 0;
break;
}
m = m / 10;
}
if (k == 1)
return 1;
else
return 0;

}****

  1. 第一行输入一个整数T,表示样例的个数(1<=T<=100)
    在每个样例中,每行输入一个整数n(1<=n<=1e12)

  2. 对于每个样例,如果n为真~好数,请输出YES,否则输出N0

人工智能总班长兼人柱力小轩在研究天体的运动时,突发奇想出了一种奇怪的数,称为好数,好数的定义如下:
一个数各个位只包含4和7的数称为好数,如47,744,4,但是467不是。
而他的室友篮球之神小孟,在听完好数的定义后想出了一种更奇怪的数,称为真好数,真好数的定义如下:
一个数的因数中有 好数 ,则称该数为 真好数,如35的因数7为好数,则35为真好数
现给你一个数n,判断该数是否为 真~好数。
如果是请输出YES,如果不是 请输出N0;

用求余获得各个位就可以

#include <stdio.h>
int main()
{
    int n,m,k=1;
    scanf("%d",&n);
    m = n;
    while(m>0)
    {
        if(m%10 ! = 4 && m%10 != 7)
        {
              k = 0;
              break;
          }
          m = m/10;
    }
    if(k==1)
        printf("yes");
    else
        printf("no");
    return 0;
}

函数片段

int is4or7(int n)
{
    int m,is4or7=0;
    m=n%10;
    if((m==4)||(m==7))
    is4or7=1;
    return is4or7;
}