三十六、输出所有两位素数,要求一行输出15个素数。
1 #include <stdio.h> 2 #include <math.h> 3 4 void main(void) 5 { 6 int a, i, end, n = 0; 7 8 for (a = 10; a <= 99; a++) 9 { 10 end = sqrt(a); 11 for (i = 2; i <= end; i++) 12 if (a % i == 0) break; 13 if ( i > end) 14 { 15 printf("%4d", a); 16 n++; 17 if (n % 15 == 0) 18 printf(" "); 19 } 20 } 21 printf(" "); 22 }
结果:
11 13 17 19 23 29 31 37 41 43 49 53 59 61 67
71 73 79 83 89 97
三十七、打印1000以内所有“水仙花数”(abc = a3 + b3 + c3)。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int a, b, c, x; 6 7 printf("1000以内所有的水仙花数是: "); 8 for (x = 100; x <= 999; x++) 9 { 10 a = x / 100; 11 b = x / 10 - a * 10; 12 c = x % 10; 13 if (x == a * a *a + b * b * b + c * c * c) 14 printf("%5d", x); 15 } 16 printf(" "); 17 }
结果:
1000以内所有的水仙花数是:153 370 371 407
三十八、猴子吃桃子问题。猴子第1天摘下若干个桃子,猴子当天吃了一半后又再吃1个,从第2天起猴子每天都是吃了前一天剩下的一半多1个桃子。到第10天猴子想吃桃子的时候发现只剩下1个桃子,请计算猴子第1天共摘了多少个桃子。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int day, n1, n2; 6 7 for (day = 10, n2 = 1; day >=1; day--) 8 { 9 n1 = (n2 + 1) * 2; 10 n2 = n1; 11 } 12 printf("第一天摘的桃子总数为: %d ", n1); 13 }
结果:
第一天摘的桃子总数为: 3070
三十九、编写程序,求s=a+aa+aaa+...+aaaa..aaa(n个a)的值。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int n, i; 6 long a, s = 0, t = 0; 7 8 printf("Input value of a and n: "); 9 scanf("%ld%d", &a, &n); 10 for (i = 1; i <= n; i++) 11 { 12 t = t + a; 13 s = s + t; 14 a = a * 10; 15 } 16 printf("%ld +%ld%ld+%d%ld%ld+... = %ld ", a, a, a, a, a, a, s); 17 }
结果:
Input value of a and n: 3 6
3+33+333+... = 370368
四十、编写程序,从键盘输入两个正整数分别存放在a和b中,用”辗转相除法“求它们的最大公约数。
1 #include <stdio.h> 2 3 void main(void) 4 { 5 int a, b, r; 6 7 printf("请输入正整数a和b的值: "); 8 scanf("%d%d", &a, &b); 9 if (a < b) 10 { 11 r = a; 12 a = b; 13 b = r; 14 } 15 r = a % b; 16 while (r != 0) 17 { 18 a = b; 19 b = r; 20 r = a % b; 21 } 22 printf("a和b的最大公约数: %d ", b); 23 }