程序功能:从键盘输入一个大于2的正整数n,求解并输出大小最接近n的素数(不包括n)。例如:
如输入:17
输则出:19
如输入:45
则输出:43 47
两个for循环分别向下和向上查找得到最近的素数n0和n1,判断其与n是否最近,如果距离相同则同时输出。
#include "stdafx.h"
#include <iostream>
using namespace std;
bool isp(int x)
{
for (int i = 2; i <= sqrt(x); i++)
{
if (x%i == 0)
return false;
}
return true;
}
int main()
{
int n,n1,n0;
cin >> n;
for (int i = n + 1; ; i++)
if (isp(i))
{
n1 = i;
break;
}
for (int i = n - 1;; i--)
if (isp(i))
{
n0 = i;
break;
}
if ((n1 - n) < (n - n0))
cout << n1<<endl;
else if((n1 - n) > (n - n0))
cout << n0<<endl;
else
cout << n0 << " " << n1 << endl;
system("pause");
return 0;
}
#include <stdio.h>
#include <math.h>
int fun(int n)
{
for(int i=2;i<n/2;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int num;
scanf("%d",&num);
for(int i=num-1,j=num+1;;i--,j++)
{
if(fun(i)&&fun(j))
{
printf("%d %d\n",i,j);
break;
}
if(fun(i)&&!fun(j))
{
printf("%d\n",i);
break;
}
if(!fun(i)&&fun(j))
{
printf("%d\n",j);
break;
}
}
return 0;
}
追问在GUIDE上运行有错误。
--------开始编译--------
4.4.c: In function `fun':
4.4.c:5: error: 'for' loop initial declaration used outside C99 mode
4.4.c: In function `main':
4.4.c:14: error: 'for' loop initial declaration used outside C99 mode
4.4.c:33:2: warning: no newline at end of file
编译结束但存在 2 错误 和 1 警告
不能编译
我用的vc++6.0可以运行呀
你把for循环里的i,j在for外面定义,然后再试试
我们要求用的是guide,所以不行。
谢谢了!
...输入一个正整数n,求解并输出大小最接近n的素数(包括n本身)_百度知...
return 1;\/\/不是素数 } main(){ int n,i,sh1,sh2;sh1=0;sh2=0;i=0;scanf("d%",&n);whlie((sh1==0)&&(sh2==0)){ if (sushu(n-i)==0)&&(n-i>1)sh1=n-i;if (sushu(n+1)==0)sh2=n+1;i++;} if sh1<>0 printf("d%\\n",sh1);if sh2<>0 printf("d...
C语言,键盘输入一个2位以上的任意数,输出这个数的第m位开始,到第n位结...
程序分析:该程序读取数据后通过除法运算分离出个位、十位?并依次存放在数组中,在通过循环将所需位数读取进来。程序基本满足要求,但计算量需要进行多次除法,且输入数据受数据类型影响较大,容易出现数据溢出。2、将数据当成字符串处理 程序及运行结果如下:程序分析:该程序读取需要处理的数据时将其作为字...
C语言,键盘输入一个2位以上的任意数,输出这个数的第m位开始,到第n位结...
程序分析:该程序读取数据后通过除法运算分离出个位、十位…并依次存放在数组中,在通过循环将所需位数读取进来。程序基本满足要求,但计算量需要进行多次除法,且输入数据受数据类型影响较大,容易出现数据溢出。2、将数据当成字符串处理 程序及运行结果如下:程序分析:该程序读取需要处理的数据时将其作为...
c语言如何输入一个正整数N,再输入N个整数,按从小到大的顺序输出?
从键盘输入一个整数N(N>=0),然后再输入N个整数, 按从小到大的顺序输出。 正在学C语言程式设计,求教 #include<stdio.h> int main(void) { int n,i,j,t; printf("please enter anumber:\\n"); scanf("%d",&n); int a[n]; printf("please enter %d number:\\n",n)...
用C语言把2-100之内的素数放到数组里,并且输出来。
for (i = 2; i <= n; i++) { if (a[i] == 0) { printf("%d ", i); \/\/ 输出素数 } } return 0;} 程序首先初始化一个大小为n+1的数组a,表示2到n的整数。接着,通过嵌套循环遍历,如果当前的i是素数(a[i]为0),就将i的所有倍数标记为合数(a[j]=1)。最后,遍历...
C语言,求输入的两个数之间的所有素数
printf("please input two numbers \\n");scanf("%d %d",&a,&b);prime(a,b);return 0;} int prime(int x,int y){ int i,j,k,cout;cout=0;for(i=x;i<=y;i++){ k=1;for(j=2;j<=i\/2;j++){ if(i%j==0){ k=0;break;} } if(k){ printf("%d \\n",i);cout++...
C语言编程:从键盘输入一个字符串。分别统计其中大写字母、小写字母及其...
void main(){ char input[1000];int i=0,out[26]={0},j;char outstring[26]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};cout<<"Please input capital password:";fge...
c语言 从键盘输入两个整数,求这两个整数的最小值.??
在 C 语言中,可以通过以下代码实现从键盘输入两个整数,然后求这两个整数的最小值:include <stdio.h> int main() { int num1, num2, min;printf("请输入两个整数:\\n");scanf("%d %d", &num1, &num2);if (num1 < num2) { min = num1;} else { min = num2;} printf("最...
用C语言编写这样一个程序:任意的写出n个整数,对它们进行比较大小并把它...
printf("请输入你要进行排序的数据个数\\n");scanf("%d",&n);\/\/录入要排列的数据 int * a;a = (int *)malloc(sizeof(int)*(n+1));printf("请输入你要排序的数据\\n");for(int i =0; i < n; i++){ scanf("%d", &a[i]);} printf("原始的数据排列是:\\n");for(int j...
C语言:请编写一个程序,从键盘读入两个整数a和n,计算并输出a+aa+aaa+...
"the result is:%d\\n",out);} 或者用楼上的公式 include <stdio.h> void main(){int i,a,n,k=1,out;printf("请输入a与n:");scanf("%d %d",&a,&n);for(i=0;i<n+1;i++){ k=k*10;} out=a*k\/81-10*a\/81-a*n\/9;printf("the result is:%d\\n",out );} ...