二进制数转化为十进制算法如何实现?(数组存放二进制数)十进制数如何判断是否为一个素数?
#include <stdio.h>
int main()
{
int n = 0,i;
int a[8] = {1,0,1,1,0,1,1,0};
for(i=0;i<8;i++)
n = n * 2 + a[i];
printf("%d",n);
}
#include <stdio.h>
int main()
{
int n,i=0;
scanf("%d",&n);
if(n<=1)
printf("%d不是素数",n);
else
{
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i<n)
printf("%d不是素数",n);
else
printf("%d是素数",n);
}
}
该回答引用ChatGPT
将一个二进制数转化为十进制数的算法,可以使用如下的方式:
初始化十进制数为0。
从二进制数的最低位(即数组的最后一位)开始,逐位遍历该二进制数。
对于每一位,将它乘以2的n次方(其中n是该位在二进制数中的位数),并将结果加到十进制数中。
重复步骤2和3,直到遍历完整个二进制数。
以下是一个示例代码:
int[] binary = {1, 0, 1, 1}; // 二进制数 1011
int decimalNumber = 0;
for (int i = binary.Length - 1; i >= 0; i--)
{
decimalNumber += binary[i] * (int)Math.Pow(2, binary.Length - 1 - i);
}
Console.WriteLine(decimalNumber); // 输出 11
判断一个十进制数是否为素数的算法,可以使用如下的方式:
如果该数小于2,则它不是素数。
如果该数可以被2整除,则它不是素数。
对于大于2的数,从2到它的平方根之间的每个数,判断是否能整除该数。
如果存在一个数能整除该数,则它不是素数;否则,它是素数。
以下是一个示例代码:
int number = 17;
bool isPrime = true;
if (number < 2)
{
isPrime = false;
}
else if (number == 2)
{
isPrime = true;
}
else if (number % 2 == 0)
{
isPrime = false;
}
else
{
for (int i = 3; i <= Math.Sqrt(number); i += 2)
{
if (number % i == 0)
{
isPrime = false;
break;
}
}
}
if (isPrime)
{
Console.WriteLine(number + " is a prime number.");
}
else
{
Console.WriteLine(number + " is not a prime number.");
}