- 50.判断一个数是否为回文数。
- (1)代码
- (2)运行结果
- 51.求一个整数的所有因数
- (1)代码
- (2)运行结果
- 52.判断Armstrong数(阿姆斯壮数)
- (1)代码
- (2)运行结果
- 53.两数之间的 Armstrong 数
- (1)代码
- (2)运行结果
- 54.使用函数判断Armstrong 数
- (1)代码
- (2)运行结果
- 55.判断素数
- (1)代码
- (2)运行结果
- 56.判断两个数之间的素数
- (1)代码
- (2)运行结果
- 57.使用函数判断两数间的素数
- (1)代码
- (2)运行结果
(1)代码设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。
例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数
#if 0 #include(2)运行结果 51.求一个整数的所有因数#include int main() { int n, reversedInteger = 0, remainder, originalInteger; printf("输入一个整数: "); scanf("%d", &n); //将n保存zaioriginal中,为了与之后翻转的数据进行比较 originalInteger = n; // 翻转 while( n!=0 ) { remainder = n%10;//1 2 3 2 1 reversedInteger = reversedInteger*10 + remainder;//1 12 123 1232 12321 n /= 10;//1232 123 12 1 } // 判断 if (originalInteger == reversedInteger) printf("%d 是回文数。", originalInteger); else printf("%d 不是回文数。", originalInteger); system("pause"); return 0; } #endif
(1)代码假如a*b=c(a、b、c都是整数),那么我们称a和b就是c的因数。
if 1 #include(2)运行结果 52.判断Armstrong数(阿姆斯壮数)#include int main() { int number, i; printf("输入一个整数: "); scanf("%d",&number); printf("%d 的因数有: ", number); //依次便利这个数,获取因数 for(i=1; i <= number; ++i) { //只要整数能被某个数整除,余数为0,这个数就有因数 if (number%i == 0) { printf("%d ",i); } } system("pause"); return 0; } #endif
(1)代码Armstrong 数,就是n位数的各位数的n次方之和等于该数,如:
153=13+53+3^3
1634=14+64+34+44
#if 0 #include(2)运行结果 53.两数之间的 Armstrong 数 (1)代码#include int main() { int number, originalNumber, remainder, result = 0; printf("输入三位数: "); scanf("%d", &number); //将原来的数保存起来,为了和之后计算的数进行做比较 originalNumber = number; while (originalNumber != 0) { //获取每一位数 remainder = originalNumber%10; //三位数是三次方,四位数是四次方 result += remainder*remainder*remainder; originalNumber /= 10; } //运算结果和输入的数是一样的,则是Armstrong数 if(result == number) printf("%d 是 Armstrong 数n",number); else printf("%d 不是 Armstrong 数n",number); system("pause"); return 0; } #endif
#if 0 #include(2)运行结果 54.使用函数判断Armstrong 数 (1)代码#include #include int main() { int low, high, i, temp1, temp2, remainder, n = 0, result = 0; printf("输入两个整数: "); scanf("%d %d", &low, &high); printf("%d 和 %d 之间的 Armstrong 数为: ", low, high); //遍历两个数之间的数 for(i = low + 1; i < high; ++i) { temp2 = i; temp1 = i; // 计算 //获取数是几位数 while (temp1 != 0) { temp1 /= 10; ++n; } //计算该数是否是Armstrong数,如果知道是几位数这个n就是确定的。 while (temp2 != 0) { remainder = temp2 % 10; result += pow((float)remainder, n); temp2 /= 10; } //将结果与对应的数进行做比较,看是否一致,一致则是Armstrong 数。 if (result == i) { printf("%d ", i); } //判断完一个数后将次方和结果都清0 n = 0; result = 0; } system("pause"); return 0; } #endif
#if 0 #include(2)运行结果 55.判断素数#include #include //声明 int checkPrimeNumber(int n); int checkArmstrongNumber(int n); int checkPrimeNumber(int n) { int i, flag = 1; for(i=2; i<=n/2; ++i) { //非素数条件 if(n%i == 0) { flag = 0; break; } } return flag; } int checkArmstrongNumber(int number) { int originalNumber, remainder, result = 0, n = 0, flag; originalNumber = number; //获取这个数是几位数 while (originalNumber != 0) { originalNumber /= 10; ++n; } //将数据保存下来为了比较,是否为Armstrong 数。 originalNumber = number; while (originalNumber != 0) { remainder = originalNumber%10; result += pow((float)remainder, n); originalNumber /= 10; } // 判断条件 if(result == number) flag = 1; else flag = 0; return flag; } int main() { int n, flag; printf("输入正整数: "); scanf("%d", &n); // 检测素数 flag = checkPrimeNumber(n); if (flag == 1) printf("%d 是素数。n", n); else printf("%d 不是素数n", n); // 检测 Armstrong 数 flag = checkArmstrongNumber(n); if (flag == 1) printf("%d 是 Armstrong 数。", n); else printf("%d 不是 Armstrong 数。",n); system("pause"); return 0; } #endif
(1)代码质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。
#if 0 #include(2)运行结果 56.判断两个数之间的素数 (1)代码#include int main() { int n, i, flag = 0; printf("输入一个正整数: "); scanf("%d",&n); //遍历,n/2是因为能被2整除,必然不是素数 for(i=2; i<=n/2; ++i) { //能被整除,则不是素数,素数只有1和它本身 if(n%i==0) { flag=1; break; } } if (flag == 0) printf("%d 是素数",n); else printf("%d 不是素数",n); system("pause"); return 0; } #endif
#if 1 #include(2)运行结果 57.使用函数判断两数间的素数 (1)代码#include int main() { int low, high, i, flag; printf("输入两个整数: "); scanf("%d %d", &low, &high); printf("%d 与 %d 之间的素数为: ", low, high); //遍历这个区间 while (low < high) { flag = 0; for(i = 2; i <= low/2; ++i) { if(low % i == 0) { flag = 1; break; } } if (flag == 0) printf("%d ", low); ++low; } system("pause"); return 0; } #endif
#if 0 #include(2)运行结果#include //声明 int checkPrimeNumber(int n); //函数定义 int checkPrimeNumber(int n) { int j, flag = 1; for(j=2; j <= n/2; ++j) { if (n%j == 0) { flag =0; break; } } return flag; } int main() { int n1, n2, i, flag; printf("输入两个正整数: "); scanf("%d %d", &n1, &n2); printf("%d 和 %d 间的素数为: n", n1, n2); //遍历数据区间(i=n1+1; i // 判断是否为素数 flag = checkPrimeNumber(i); if(flag == 1) printf("%d ",i); } system("pause"); return 0; } #endif



