C 求完数 水仙花数 完全平方数 素数 2+22+222... PI
#include <stdio.h> #include <math.h> void clearYinziArr(int arr[]); int aItem(int key, int i); int main() { //求PI //pi=4*(1-1/3+1/5-1/7+1/9-1/11....) //本次求PI 直到某一项绝对值小于 10^(-6) int sign = 1;//控制正 负 double fenmu = 1; double sum = 0; while (fabs(1 / fenmu) > 1e-6) { //fabs是math.h中的函数 sum += (1 / fenmu * sign); sign = -sign; fenmu += 2; } printf("%lf", 4 * sum); //求完数且输出所有因子 //它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。 //输出所有因子 这里用的方式是将每次求出的因子都放在数组中 int i = 1; int yinzi = 1; int yinziArr[50]; for (; i < 1000; i++) { int yinziSum = 0; clearYinziArr(yinziArr);//首先将yinziArr数组各个元素置0 int yinziArrIndex = 0;//yinziArr数组的下标 for (yinzi = 1; yinzi < i; yinzi++) { if (i % yinzi == 0) { yinziSum += yinzi; yinziArr[yinziArrIndex++] = yinzi;//是因子 就把它放入因子数组 } } if (yinziSum == i) { int j = 0; for (j = 0; j < yinziArrIndex; j++) {//输出因子 printf("%d,", yinziArr[j]); } printf(" ,%d\n", i); } } //寻找2--1000的完全平方数 i=2; for(i=2;i<1000;i++){ int j=0; for(j=1;j<i;j++){ if(j*j==i){ printf("完全%d,%d",i,j); } if(j*j>i){ break; } } } //球水仙花数 //153=1^3+5^3+3^3 i = 0; for (i = 100; i < 1000; i++) { int ge = i % 10; int shi = (i / 10) % 10; int bai = i / 100; //pow(float,float)返回float if (i == (pow(ge, 3) + pow(shi, 3) + pow(bai, 3))) { printf("%d,", i); } //虽然是不同类型数值 但是值相同 ==是ok的 // int i=1; //float f=1.0f; //printf("%d,",i==f);//1 } //求2+22+222+2222+22222.... sum = 0; i = 0; for (i = 0; i < 7; i++) { sum += aItem(2, i); } printf("\n%d\n", sum); //求素数 //如果一个数能被2~√m 中任意一个数字整除 那么它不是素数 i = 0; for (i = 2; i < 200; i++) { int flag = 1; int k = sqrt(i); int j = 0; for (j = 2; j <= k; j++) {//注意 分母不能从0开始 if (i % j == 0) { flag = 0; } } if (flag) { printf(",%d,", i); } } //求阶乘的和 //1!+2!+3!+4!... //如果是使用递归 那么需要2个函数,一个计算每一项的值 一个计算和 //所以还是用循环好了 sum=0; int item=1; for(i=1;i<5;i++){//求前8项的和 int j=1; for(j=1;j<=i;j++){ item*=j; } sum+=item; } printf("sum:%d",sum); return 1; } void clearYinziArr(int arr[]) { int i = 0; for (; i < 50; i++) { arr[i] = 0; } } int aItem(int key, int i) { int s = key; int j = 1; while (j <= i) { s = s * 10 + key; j++; } printf("-%d,", s); return s; }