请详细代码和解析过程

img


重点是怎么保存至文件,以及如何实现输出前n个H数,希望有较简洁的代码

img

#include<stdio.h>
#include<string.h>
int st(int n)
{
    int t=2;
    while (n>1)
    {
        if (n%t==0)
        {
            if (t!=2 && t!=3 && t!=5 && t!=7)
                return 0;
            n /= t;
        }
        else
            t++;
     }
    return 1;
}

int main()
{
    int n,i=2;
    FILE* fp;
    if ((fp = fopen("data.txt", "w")) == NULL)
    {
        printf("cannot open file\n");
        return -1;
    }
    scanf("%d", &n);
    while (n>0)
    {
        if (st(i))
        {
            printf("%d ", i);
            fprintf(fp,"%d ", i);
            n--;
        }
        i++;
    }
    fclose(fp);
    return 0;
}

供参考:

#include<stdio.h>
#define min(a,b) (a)>(b)?(b):(a)
void  HNumber(int n)
{
    FILE* fp;
    int* m = new int[n + 1];
    m[0] = 1;
    int i, a = 0, b = 0, c = 0, d = 0;
    for (i = 1; i <= n; i++) {
        m[i] = min(min(min(m[a] * 2, m[b] * 3), m[c] * 5), m[d] * 7);
        if (m[i] == m[a] * 2)
            a++;
        if (m[i] == m[b] * 3)
            b++;
        if (m[i] == m[c] * 5)
            c++;
        if (m[i] == m[d] * 7)
            d++;
    }
    for (i = 1; i <= n; i++)//输出一行 10printf(i % 10 == 0 ? "%5d\n" : "%5d", m[i]);
    if ((i - 1) % 10 != 0)
        printf("\n");
    fp = fopen("Hnumber.txt", "w");//保存到文件
    if (fp == NULL) {
        printf("Save to file fail!\n");
    }
    else {
        for (i = 1; i <= n; i++)
            fprintf(fp, "%5d", m[i]);
        fclose(fp);
    }
    delete[]m;
}
int main()
{
    int n;
    while (scanf("%d", &n) == 1 && n >= 1 && n <= 300)
    //多组输入,输入n 大于300 或 小于1 时退出运行。
        HNumber(n);
    return 0;
}

img

写入文件

FILE *fp;
fprintf(fp,"%d ",num);
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632