c语言 输出[m,n]之间素数 的程序

最好是运行正确的... 最好是运行正确的 展开
 我来答
风若远去何人留
推荐于2017-10-03 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

首先根据数学规则,编写判断素数的程序。

然后按照如下思路:

1 输入m和n;

2 对[m,n]的整数进行遍历。

3 对每个数值进行判断,如果是素数,则输出。


代码:

#include <stdio.h>
#include <math.h>

int is_prime(int n)
{
int i;
for(i = 2; i <= sqrt(n); i ++)
if(n%i == 0) return 0;
return 1;
}
int main()
{
    int m,n,i;
    scanf("%d%d",&m,&n);
    for(i = m; i <= n; i ++)
        if(is_prime(i))printf("%d ", i);
}
百度网友09b5213
2011-04-16 · TA获得超过180个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:183万
展开全部
(先建立一个含有2~up之间所有自然数的数表,在数表中删去2的倍数(不包括2);然后找2后面第一个被保留的数p(是3),再删除p的倍数(不包括p);然后再找下一个被保留的数(是5),继续上述步骤:这样继续下去,直至P大于sqrt(up)为止。最后再删除小于low的数,这样数表中剩下的数就是所要求的所有素数(low~up之间)。
1) #include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define max 10000
keytype * init(keytype *sushu)/*初始化结点*/
{
sushu=(keytype *)malloc(sizeof(keytype));
sushu->next=NULL;
return sushu;
}
keytype *creatlist(keytype *shai,int low,int up)/*建立从2开始到up的整数的链表*/
{
keytype *p,*r;
int i,_up;
shai=init(shai);
r=shai;
for(i=low;i<=up;i++)
{
p=init(p);
p->key=i;
r->next=p;
r=r->next;
}
return shai;
}
keytype *shaixuan(keytype *shaizhi,int up)/*筛选算法*/
{
keytype *p,*r,*q;
p=shaizhi->next;
for(;p->key<sqrt(up);p=p->next)
{r=p;
while(r->next!=NULL)
{
if(r->next->key%p->key==0) /*如果r->next->key 能被p->key整除,则r->next->key不是素数,释放r->next*/
{
q=r->next;
r->next=q->next;
free(q);
}
else r=r->next;
}
}
return shaizhi; /*返回筛选结果*/
}

int main(int argc, char *argv[])
{int up=0,_up,low=0;
keytype *shai,*shai1;
printf("输入上限和下限\n");
scanf("%d%d",&low.&up);
shai=creatlist(shai,2,up);//建立数组从2—up
up=sqrt(up);
shai=shaixuan(shai,up);//筛选2—up中的素数
shai1=shai->next;
free(shai);
shai=shai1;
shai1=shai1->next;
while(shai->key<low)/*把小于low的多余的数删除*/
{
free(shai);
shai=shai1;
shai1=shai1->next;
}
while(shai!=NULL)
{ printf("%d ",shai->key);
shai=shai->next;}
system("PAUSE");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伍拾步
推荐于2017-10-02 · TA获得超过8199个赞
知道大有可为答主
回答量:1852
采纳率:100%
帮助的人:1943万
展开全部
#include <stdio.h>
#include <math.h>
int f(int n)//判断n是否为素数,是则返回1,否则返回0
{
int i=2;
while(i<=sqrt(n))
if (n%i++==0)return 0;
return 1;
}
void main()
{
int m,n;
printf("请输入m n :");
scanf("%d %d",&m,&n);
while(m<=n)
{
if (f(m))printf("%-3d",m);
m++;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迷茫的我ai
2011-04-02 · TA获得超过497个赞
知道答主
回答量:96
采纳率:100%
帮助的人:30.9万
展开全部
main() {int floy,m; for(m=2;m<=100;m++) /*这句是设定求2到100的素数 数字可以按你需要的改*/ f(m);}/*函数调用*/ f(int x) { int floy=1,i; for(i=2;i<=x-1;i++) if(x%i==0) {floy=0;break;} if(floy==1) printf("%d",x); } /*这是求100以内的素数具体要求M到N的改一下前面的那句就可以了*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wh1991129
2011-04-04
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
我就只回答[1,100]的了,其他的改一下数字即可!
#include "stdio.h"
#include "conio.h"

main()
{ int m,i;
for(m=2;m<=100;m++)
{for(i=2;i<=m-1;i++)
if(m%i==0) break;
if(i>m-1) printf("%3d",m);
}

getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式