从键盘输入一个整数,输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。PS:数学意义上的最小素数是2,例如,若输入-213,结果应是2
不要太高深 开头用#include int main for scanf printf 等等这几类基础的吧
其他复杂的就算了吧
求解答C语言求解 新人一个!!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- sdljtyk 2016-11-01 13:54关注
#include<stdio.h> int p[10000]; //将10000以内的所有素数枚举放到数组 p 中。 void prime() { int i,j; for(i=2;i<10000;i++) p[i]=1; int k=100; for(i=2;i<k;i++) { if(p[i]) for(j=i+i;j<10000;j+=i) p[j]=0; } } int main() { int n; prime(); while(scanf("%d",&n)) { int num1,num2; num1=num2=99999; int i=n; if(n<0) { printf("2\n"); continue; } while(true) { if(p[i]==1) { num1=i-n; break; } i++; } int x=n-1; while(x>0) { if(p[x]==1) { num2=n-x; break; } x--; } if(num1<num2) printf("%d\n",i); else if(num1==num2) printf("%d %d\n",i,x); else printf("%d\n",x); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报