用c语言实现判断一个整数是不是丑数
时间: 2023-12-03 11:45:50 浏览: 45
一个正整数如果只包含质因子2,3,5中的若干个数,则称其为丑数。例如,6、8都是丑数,但14不是,因为它包含了质因子7。现在让我们用C语言实现判断一个整数是否是丑数的代码。
```c
#include <stdio.h>
int isUgly(int num) {
if(num <= 0) return 0;
while(num % 2 == 0) num /= 2;
while(num % 3 == 0) num /= 3;
while(num % 5 == 0) num /= 5;
return num == 1;
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
if(isUgly(n)) {
printf("%d是丑数\n", n);
} else {
printf("%d不是丑数\n", n);
}
return 0;
}
```
以上代码中,我们定义了一个 `isUgly` 函数,该函数接受一个整数作为参数,如果该整数是丑数,则返回1,否则返回0。在函数中,我们使用了三个while循环来连续除以2、3、5,直到除不尽为止,如果最终结果是1,则说明原数只包含质因子2、3、5,即为丑数。在主函数中,我们可以读入一个整数,然后调用 `isUgly` 函数来判断该数是否为丑数并输出结果。
相关问题
用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语言实现输入一个整数,判断该数的奇偶性
可以使用C语言中的取模运算符 `%` 来判断一个整数的奇偶性。如果一个整数对2取模的结果为0,那么它是偶数;否则它是奇数。具体实现如下:
```c
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num % 2 == 0) {
printf("%d是偶数\n", num);
} else {
printf("%d是奇数\n", num);
}
return 0;
}
```
上述代码中,首先使用 `scanf()` 函数获取用户输入的整数,然后使用条件语句判断该数的奇偶性,并输出相应的结果。