从键盘输入一个整数,输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。PS:数学意义上的最小素数是2,例如,若输入-213,结果应是2
不要太高深 开头用#include int main for scanf printf 等等这几类基础的吧
其他复杂的就算了吧
这代码你先试试吧,可以简化的,怕你接受不了,先看看这个能不能理解
#include <stdio.h>
#include <stdlib.h>
int main()
{
int nMaxIntValue = 214783647; // 这个是int的最大值
int nDistance = nMaxIntValue; // 保证距离最远
int nInputValue = 0;
printf("请输入一个整数:");
scanf("%d", &nInputValue);
if (nInputValue <= 2)
{
printf("结果是2\n");
getchar(); // 就是为了看结果
getchar();
return 0;
}
int nFindCount = 0;
int nRet1, nRet2;
for(int nCurNumber = 3; nCurNumber <= nMaxIntValue; ++nCurNumber)
{
int nEndValue = nCurNumber / 2 + 1;
bool bIsPrime = true;
for (int nIndex = 2; nIndex <= nEndValue; ++nIndex)
{
if (nCurNumber % nIndex == 0)
{
bIsPrime = false;
break;
}
}
// 是素数就进行距离判断
if (bIsPrime)
{
int nCurDistance = abs(nInputValue - nCurNumber);
if (nCurDistance < nDistance)
{
nDistance = nCurDistance;
nRet1 = nCurNumber;
nFindCount = 1;
}
else if (nCurDistance == nDistance)
{
nDistance = nCurDistance;
nRet2 = nCurNumber;
nFindCount = 2;
break;
}
else
{
break;
}
}
}
if (nFindCount == 1)
{
printf("结果是%d\n", nRet1);
}
else if (nFindCount == 2)
{
printf("结果是%d %d\n", nRet1, nRet2);
}
getchar(); // 就是为了看结果
getchar();
return 0;
}
我怎么看你问了好几遍了呢?我先写写?
输入的数字没有范围吗?