C语言,求输入的两个数之间的所有素数

#include<stdio.h>#include<stdlib.h>intmain(){inta,b,m,k,t;scanf("%d%d",&a,&b);if(a>=b... #include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,m,k,t;
scanf("%d%d",&a,&b);
if(a>=b){
t=a;
a=b;
b=t;
}
else {for(k=a;k<=b;k++)
for(m=2;m<=k-1;m++)
if(k%m!=0)
printf("%d ",k);}
return 0;
}

请看一下这个程序哪里错了
展开
 我来答
问明6E
高粉答主

2019-06-14 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13.1万
展开全部

#include <stdio.h>

int main()

{

int a,b;

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++;

}

}

printf("there are %d numbers from %d to %d \n",cout,x,y);

return 0;

}

扩展资料:

scanf函数用法:

scanf("输入控制符",输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

985967518
推荐于2017-09-15 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109868
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

思路:先定义一个isp函数用来判断一个数是否是素数,接着就依次遍历两个数之间的所有数,判断其是否是素数,是就输出该数。

参考代码:输出9到100之间的所有素数(可以输入9 100也可以输入100 9,即数字大小顺序不限制)

#include<stdio.h>
bool isp(int n)//求矩阵n列的累加和 
{
int i;
for(i=2;i<n;i++)
if(n%i==0) return false;
return true;
}
int main()
{
int a,b,i;
scanf("%d%d",&a,&b);
if(a>b){
    t=a;
    a=b;
    b=t;
}
for(i=a;i<=b;i++)
if(isp(i))
printf("%d ",i);
return 0;
}
/*
输出: 
100 9
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孟涛玉
推荐于2017-10-10 · 超过13用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:38.5万
展开全部
你看一下下面的代码,是在你的基础上改的,其中if,else这儿有错误,两外就是判断条件,素数的定义是只能整除1和其本身(1除外),所以判断是是出1和本身之外其他都不整除才是素数。另外给你说一个更高效的,其实只需要从2循环到这个数的正平方根就可以,没必要循环到这个数的前一个数。

望采纳

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,m,k,t,flag;
scanf("%d%d",&a,&b);
if(a>=b){
t=a;
a=b;
b=t;
}
for(k=a;k<=b;k++)
{
flag=1;
for(m=2;m<=k-1;m++)
if(k%m==0)
flag=0;
if(flag==1&&k!=1)//1不是素数
printf("%d ",k);
}
printf("\n");
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不愿相离
2014-10-24 · TA获得超过440个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:492万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,b,m,k,t,n;
scanf("%d%d",&a,&b);
if(a>=b)
{
t=a;
a=b;
b=t;
}
for(k=a;k<=b;k++)
{ n=(int)sqrt(k);
for(m=2;m<=n;m++)
if(k%m==0)
break;
if(m==n+1)
printf("%d ",k);
}
return 0;
}
对照着参考下吧,望采纳
追问
for(m=2;m<=k-1;m++)
if(k%m!=0)
printf("%d ",k);}
return 0;
}
请问这里哪里错了?
追答
追问采纳者吧,亲。木有心情回答了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式