C语言中求素数问题

写一个例程:

函数fun,求小于lim的所有素数:

//入口参数:lim 界限,aa[MAX] 存放素数的数组
int fun(int lim, int aa[MAX])
{
	int i=0;
	int j=0;
	int k=0;
	for(i=2;i<=lim;i++)   //遍历小于等于lim的数
	{
		for(j=2;j<i;j++)  //遍历素数
			if(i%j==0)    //有能被整除的数,就跳出循环
				break;
		if(j==i)          //判断有没有跳出for循环的
			aa[k++]=i;
	}
	return k;            //返回素数的个数
}

完整代码:

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa[MAX])
{
	int i=0;
	int j=0;
	int flag=0;
	int k=0;
	for(i=2;i<=lim;i++)
	{
		for(j=2;j<i;j++)
			if(i%j==0)
				break;
		if(j==i)
			aa[k++]=i;
	}
	return k;
}
void main()
{
  FILE *wf;
  int limit,i,sum;
  int aa[MAX];
  system("CLS");
  printf("输入一个整数:");
  scanf("%d",&limit);
  sum=fun(limit,aa);        
  for(i=0;i<sum;i++)
     {
      if(i%10==0&&i!=0)    /*每行输出10个数*/
         printf("\n ");
      printf("%5d ",aa[i]);
    }
/******************************/
  wf=fopen("out.dat","w");
  sum=fun(15,aa);        
  for(i=0;i<sum;i++)
     {
      if(i%10==0&&i!=0)    /*每行输出10个数*/
         fprintf(wf,"\n");
      fprintf(wf,"%5d ",aa[i]);
    }
  fclose(wf);
/*****************************/
}

求大于m且紧随m的素数

int fun( int m)
{ int i,k;
  for (i=m+1; ;i++)
     { for (k=2;k<i;k++)
/*************found**************/
          if (i%k==0)
          break;
/*************found**************/
        if (i==k)
        return(i);
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nop_(void)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值