四叶玫瑰数

        求n(n<10000)以内的所有四叶玫瑰数并逐个存放到result所指的数组中,四叶玫瑰数的个数作为函数值返回。 如果一个4位正整数等于其各个数字的4次方之和,则称该数为四叶玫瑰数。 例如,1634=1*1*1*1+6*6*6*6+3*3*3*3+4*4*4*4,因此1634就是一个四叶玫瑰数。

#include<stdio.h>
#pragma warning (disable:4996)
int fun(int n, int result[])
{ 
    int i,j,k=0;
    int a,b,c,d;
    for(i=1000;i<=n;i++)
    {
        a=1;b=1;c=1;d=1;
        for(j=0;j<4;j++)
        {
            a*=i/1000;
            b*=i%1000/100;
            c*=i%1000%100/10;
            d*=i%1000%100%10;
        };
        if(i==a+b+c+d)
        {
            result[k]=i;
            k++;
        }
    }
    return k;
}
main( )
{
    int result[10], n, i;
    void NONO(int result[], int n);
    n = fun(9999, result);
    for(i=0; i<n; i++) printf("%d
", result[i]);
    NONO(result, n);
}

void NONO(int result[], int n)
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
    FILE *fp ;
    int i;

    fp = fopen("..\out.dat","w") ;
    fprintf(fp, "%d
", n);
    for(i=0; i<n; i++) fprintf(fp, "%d
", result[i]);
    fclose(fp);
}

 运行结果

原文地址:https://www.cnblogs.com/wlei5206/p/12754933.html