有人方便给我解解惑吗/-/

求100-350中的所有素数,输出在窗体,再求这些素数中个位十位百位,如果三位都是素数,则输出在窗体,大佬们求算法求算法求算法!

另外还有两个小问题,inputbox返回给变量的值,如果不定义变量的数据类型,默认情况下是什么数据类型?定义了数据类型,如整形,那么这个返回的值是否就是整形?

最后一个问题是val返回的是什么数据类型?如果直接给变量定义数值数据类型、能不能进行计算?
(目前在中专/-/自己摸索学太难了,求大佬解答)

img

#include <stdio.h>
#include <math.h>
int f(int n)
{
    int i = 0;
    int q = sqrt(n);
    for (i = 2; i <= q; i++ )
    {
        if(n % i  == 0)
        {
            break;
        }
    }
    if (i > q)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int ge(int n)
{
    return n%10;
}
int bai(int n)
{
    return n/100;
}
int ten(int n)
{
    return (n-(bai(n)*100+ge(n)))/10;
}
int main() {
    int j,t[250],h=0;
    printf("100--300:");
    for(j=100; j<=350; j++)
    {
        if(f(j)==1)
        {
            printf("%5d",j);
            t[h]=j;
            h++;
        }
    }
    printf("\n");
    printf("百位十位个位都是素数:");
    for(j=0; j<h; j++)
    {
        if(f(bai(t[j]))==1&&f(ten(t[j]))==1&&f(ge(t[j]))==1)
        {
            printf("%d  ",t[j]);
        }
    }
    return 0;
}

修改如下,供参考:

#include <stdio.h>
#include <math.h>
int f(int n)
{
    int i = 0;
    int q = sqrt(n);
    if (n <= 3) return n > 1;  //修改
    for (i = 2; i <= q; i++)
    {
        if (n % i == 0)
        {
            break;
        }
    }
    return i > q;    //修改
    //if (i > q)
    //{
    //    return 1;
    //}
    //else
    //{
    //    return 0;
    //}
}
int ge(int n)
{
    return n % 10;
}
int bai(int n)
{
    return n / 100;
}
int ten(int n)
{
    //return (n - (bai(n) * 100 + ge(n))) / 10; //修改
    return n / 10 % 10;
}
int main() {
    int j, t[250] = { 0 }, h = 0;  //修改
    printf("100--300:");
    for (j = 100; j <= 350; j++)
    {
        if (f(j) == 1)
        {
            printf("%5d", j);
            t[h] = j;
            h++;
        }
    }
    printf("\n");
    printf("百位十位个位都是素数:");
    for (j = 0; j < h; j++)
    {
        if (f(bai(t[j])) == 1 && f(ten(t[j])) == 1 && f(ge(t[j])) == 1)
        {
            printf("%d  ", t[j]);
        }
    }
    return 0;
}

def Prime(START, END):
    data = [1] * END
    data[:2] = [0, 0]
    for idx in range(int(END ** 0.5) + 1):
        if idx > 1:
            if data[idx] == 1:
                for idy, _ in enumerate(data):
                    if idy > idx and idy % idx == 0:
                        data[idy] = 0
    resu = [idx for idx, v in enumerate(data) if END + 1 > idx > START - 1 and v == 1]
    return resu
X = Prime(100, 350)
print(X)
res = filter(lambda x: all(list(map(lambda y: y in ['2', '3', '5', '7'], str(x)))), X)
print(list(res))
'''--result
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349]
[223, 227, 233, 257, 277, 337]
'''