如何用C语言判断一个正整数是不是自守数
时间: 2024-05-08 08:20:01 浏览: 8
一个正整数,如果它的平方以其本身结尾,则该数被称为自守数。
在C语言中,可以用以下代码来判断一个正整数是否是自守数:
```c
#include <stdio.h>
int main() {
int num;
printf("请输入一个正整数: ");
scanf("%d", &num);
int square = num * num;
while (num > 0) {
if (num % 10 != square % 10) {
printf("%d 不是自守数。\n", num);
return 0;
}
num /= 10;
square /= 10;
}
printf("%d 是自守数。\n", num);
return 0;
}
```
首先,用户要输入一个正整数。然后,计算出该正整数的平方,并通过循环逐位比较原数和平方的最后一位。如果某一位不相等,则该数不是自守数,程序输出相应的提示信息并结束。如果所有位都相等,则该数是自守数,程序输出相应信息并结束。
相关问题
用c语言编程判断一个整数是否为自守数
好的,以下是用C语言编写的判断一个整数是否为自守数的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n;
printf("请输入一个整数:\n");
scanf("%d", &n);
// 计算该数的平方
long long square = (long long)n * n;
// 将该数和它的平方转换成字符串
char str1[20], str2[20];
sprintf(str1, "%d", n);
sprintf(str2, "%lld", square);
// 比较末尾数是否相等
int len1 = strlen(str1), len2 = strlen(str2);
if (len1 > len2) {
printf("不是自守数\n");
return 0;
}
for (int i = 1; i <= len1; i++) {
if (str1[len1 - i] != str2[len2 - i]) {
printf("不是自守数\n");
return 0;
}
}
printf("是自守数\n");
return 0;
}
```
该程序首先让用户输入一个整数,然后计算该数的平方,并将该数和它的平方转换成字符串。接着,该程序比较两个字符串的末尾数是否相等,如果相等则输出“是自守数”,否则输出“不是自守数”。注意,为了避免整数溢出,该程序使用了long long类型来保存平方。
用c语言,判断一个正整数是不是素数
```
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num);
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d是素数。\n", num);
} else {
printf("%d不是素数。\n", num);
}
return 0;
}
bool is_prime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
```
这里使用了一个`is_prime`函数来判断一个正整数是不是素数。首先判断如果这个数小于等于1,那么它不是素数,直接返回`false`。然后从2开始遍历到这个数的平方根,如果这个数能被其中任意一个数整除,说明它不是素数,返回`false`。最后如果都没有返回,说明这个数是素数,返回`true`。