intmain() { int i, j; for (i = 1; i <= 1000; i++) { for (j = 2; j < i; j++) // j < i / 2 或者 j < (int)sqrt((double)i)都可 { if (i % j == 0) { break; } } if (i == j) { printf("%d\t", i); } }
intmain() { int i, j; int sum; for (i = 1; i < 1000; i++) { sum = 0; for (j = 1; j < i; j++) { if (i % j == 0) { sum = sum + j; } } if (sum == i) { printf("%d\t", i); } }
方法1: intmain() { int i; int g, s, b; for (i = 100; i <= 999; i++) { g = i % 10; s = i / 10 % 10; b = i / 100; if (g * 100 + s * 10 + b == i) { printf("%d\t", i); } }
return0; }
方法2: intmain() { int i; int g, b; for (i = 100; i < 1000; i++) { g = i % 10; b = i / 100; if (g == b) { printf("%d\t", i); } }
return0; }
⭐判断一个数不是不是回文数【不限范围】: intmain() { int num = 0; scanf("%d", &num); int res = 0; int i = num; while (i) { res = res * 10 + i % 10; i = i / 10; } if (res == num) { printf("%d 是回文数", num); } else { printf("%d 不是回文数", num); }
return0; }
水仙花数
水仙花数:输出 100-999 之间所有的水仙花数。
水仙花数:一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
intmain() { int i; int g, s, b; for (i = 100; i < 1000; i++) { g = i % 10; s = i / 10 % 10; b = i / 100; if (g * g * g + s * s * s + b * b * b == i) { printf("%d\t", i); } }
判断是否为完全平方数: intmain() { int num = 0; scanf("%d", &num); int i; int flat = 0; for (i = 1; i < (int)sqrt((double)num); i++) { if (i * i == num) { flat = 1; break; } } if (flat) { printf("%d是完全数", num); } else { printf("%d不是完全数", num); }
return0; }
输出指定范围的完全平方数: intmain() { int i, j; for (i = 1; i < 100; i++) { for (j = 1; j <= (int)sqrt((double)i); j++) { if (j * j == i) { printf("%d\t", i); } } }
暴力法: intmain() { int a = 12; int b = 16; int i; if (a > b) { int tmp = a; a = b; b = tmp; } for (i = a; i > 0; i--) { if (a % i == 0 && b % i == 0) { printf("%d 和 %d 最大公约数是 %d", a, b, i); break; } }
return0; }
辗转相除法: intmain() { int a = 12; int b = 16; int c; while (c = a % b) { a = b; b = c; } printf("%d", b);
return0; }
辗转相减法:【大数减小数,直至相等】 // 16 - 12 = 4 // 12 - 4 = 8 // 8 - 4 = 4 // 4 - 4 = 0 intmain() { int a = 12; int b = 16; int c = 0; while (a != b) { if (a < b) { int temp = a; a = b; b = temp; } c = a - b; a = b; b = c; }
// 最小公倍数 = 两数乘积 / 最大公因数 intmain() { int a = 12; int b = 16; int c; int res = a * b; while (c = a % b) { a = b; b = c; } res = res / b; printf("%d", res); return0; }
intmain() { int i = 0; int x, y; for (i = 0; i < 1000; i++) { x = sqrt(i + 100); y = sqrt(i + 168); if (x * x == (i + 100) && y * y == (i + 168)) { printf("%d", i); break; } }
return0; }
求数字:求所有的四位数中,原数的 9 倍与其逆序相等的数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
intmain() { int i = 0; int g, s, b, q; for (i = 1000; i <= 9999; i++) { g = i % 10; s = i / 10 % 10; b = i / 100 % 10; q = i / 1000; if (i * 9 == (g * 1000 + s * 100 + b * 10 + q)) { printf("%d", i); } }
return0; }
求数字:求 1(含 1)-200(含 200)中,能同时被 2、5 除余 1 的整数。
1 2 3 4 5 6 7 8 9 10 11 12
intmain() { for (int i = 1; i <= 200; i++) { if (i % 2 == 1 && i % 5 == 1) { printf("%d ", i); } }
return0; }
求位数
求位数:输入一个正整数,输出它是几位数?
1 2 3 4 5 6 7 8 9 10 11 12
intmain() { int a = 999; int i = 0; for (i = 0; a; i++) { a = a / 10; } printf("%d", i);
return0; }
翻转数字
翻转数字
1 2 3 4 5 6 7 8 9 10 11 12 13
intmain() { int a = 123; int res = 0; while (a) { res = res * 10 + a % 10; a = a / 10; } printf("%d", res);