四叶玫瑰数
求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\n", result[i]); NONO(result, n); } void NONO(int result[], int n) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp ; int i; fp = fopen("..\\out.dat","w") ; fprintf(fp, "%d\n", n); for(i=0; i<n; i++) fprintf(fp, "%d\n", result[i]); fclose(fp); }
运行结果