写一个C语言程序用来判断一个正整数是否为2的幂次方
时间: 2023-05-11 13:07:43 浏览: 81
以下是C语言程序,用来判断一个正整数是否为2的幂次方:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if ((n & (n - 1)) == 0) {
printf("%d是2的幂次方\n", n);
} else {
printf("%d不是2的幂次方\n", n);
}
return 0;
}
```
该程序通过位运算判断一个正整数是否为2的幂次方。如果一个正整数n是2的幂次方,那么它的二进制表示中只有一位是1,其余位都是0。因此,n-1的二进制表示中除了最高位是0,其余位都是1。如果n & (n-1)等于0,说明n的二进制表示中只有一位是1,因此n是2的幂次方。
相关问题
C语言输入一个正整数n输出2的0次方到2的n次方的值
以下是一个C语言程序,可以输入一个正整数n,然后输出2的0次方到2的n次方的值:
```c
#include <stdio.h>
int main() {
int n, i, power;
printf("请输入正整数n:");
scanf("%d", &n);
printf("2的0次方到2的%d次方的值为:\n", n);
power = 1;
for (i = 0; i <= n; i++) {
printf("2的%d次方 = %d\n", i, power);
power *= 2;
}
return 0;
}
```
程序的思路是使用一个循环变量i从0到n,每次计算2的i次方的值,并输出。循环变量i也可以看作是指数,由于2的0次方等于1,所以循环从0开始。循环体内使用一个变量power来保存2的i次方的值,每次循环更新它的值为原来的2倍。
用c语言写一个判断素数的程序
以下是用 C 语言编写的判断素数的程序:
```c
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
if (is_prime(n)) {
printf("%d是素数\n", n);
} else {
printf("%d不是素数\n", n);
}
return 0;
}
```
该程序通过一个名为 `is_prime` 的函数来判断一个数是否为素数。该函数接受一个整数参数 `n`,如果 `n` 是素数,返回 1,否则返回 0。在 `main` 函数中,我们先读入一个正整数 `n`,然后调用 `is_prime` 函数来判断 `n` 是否为素数,并输出相应的结果。
注意:该程序只能判断小于等于 2 的 31 次方减 1 的正整数是否为素数。如果需要判断更大的数是否为素数,需要使用更高效的算法。