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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 输出[m,n]之间素数 的程序相关的知识,希望对你有一定的参考价值。

最好是运行正确的

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

然后按照如下思路:

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);
参考技术A (先建立一个含有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;
参考技术B #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++;

本回答被提问者采纳
参考技术C 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的改一下前面的那句就可以了*/ 参考技术D 我就只回答[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();

ZZNUOJ_C语言1092:素数表(函数专题)(完整代码)

题目描述

输入两个正整数m和n,输出m和n之间的所有素数。
 
要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。
 

int prime(int n) 

     

//判断n是否为素数, 若n为素数,本函数返回1,否则返回0 

 

输入

输入两个正整数m和n,m<=n,且都在int范围内。

输出

输出占一行。输出m和n之间的所有素数,每个数后有一个空格。如果如果m到n之间没有素数,输出”No Answer”。

样例输入

2 6

以上是关于c语言 输出[m,n]之间素数 的程序的主要内容,如果未能解决你的问题,请参考以下文章

C语言 输出n到m之间的所有素数

C语言求助,《求m和n之间的所有素数》

C语言m~n之间的素数

如何用C语言求1至100所有素数的和?

大一c语言的题目。输出m-n之间所有的素数

c语言从n个数中选m个数的组合