C编程练笔-质数

题目:利用数组求出前N个质数!

思路:定义数组 primes[N] 其中 primes[0]=2

然后从num=3开始,判断一个num是否质数,是则加引入数组 primes[N]

判断一个num是否质数:如果数组中的元素均不能整除这个num,则可判断它为质数!

 

代码在vc++中编绎通过


#include <stdio.h>
#include <conio.h>
#define N 800 //求出前800个质数!

void main()
{
 int primes[N]={2},p_number=1;
 //定义数组第一个元素,p_number代表元素个数
 int num,i,remainder,count=0;
 //num控制数字,remainder余数,count控制输出换行
 
 for(num=3;;num+=2) //从num=3开始循环,不考虑偶数
 {
  for(i=0;i<p_number;i++) //判断num是否质数
  {
   remainder=num%primes[i];
   if(remainder == 0) break; //非质数跳出
  }
  
  if(remainder !=0)
  {
   primes[p_number++]=num;
  }
  //如果num为质数,则引入数组中

  if(p_number == N) break;
 }

 printf("The first %d primes are: /n",N);
 for(p_number=0;p_number<N;p_number++)
 {
  printf("%-7d",primes[p_number]);
  count++;
  if(count%8 == 0) printf("/n");
 }
 //输出,并控制每8个换行
 printf("/nPress any key to Quit.../n");
 getch();

}


 

需改进的地方:想用指针控制数组的大小,目前无能为力!

另外,代码中判断num是否质数的循环语句认为可以改进!

for(i=0;i<p_number;i++) //判断num是否质数
  {
   remainder=num%primes[i];
   if(remainder == 0) break; //非质数跳出
  }
  
  if(remainder !=0)
  {
   primes[p_number++]=num;
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值