C/C++,笔试面试,多种方法求100以内的所有素数

这篇博客介绍了使用C语言来找出1到100之间的所有素数,包括两种不同的方法:一是每个数试除到其平方根;二是先保存已找到的素数,然后用它们去除后续的数。还提到了筛选法,通过依次排除2、3、5等素数的倍数来找到剩余的素数。读者可以通过链接获取更多思路。
摘要由CSDN通过智能技术生成

 使用C语言编写程序,求1到100之间的素数(还有另一种求素数:求前100个素数)。
1.每个数试除到√x
2.将素数保存,让后面的数整除保存的素数
3.筛选:依次删除范围中的2的倍数、3的倍数、5的倍数…


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

void test1()//试除法(1)
{
 //思路:每个数试除到√x
 const int Range = 100;
 int num = 0;
 int i = 0, j = 2;
 for (i = 2; i <= Range; i++)
 {
  //令每次试除都从2开始
  for (j = 2; j <= sqrt(i); j++)
  {
   if (0 == i%j)
    break;
  }
  if (j > sqrt(i))
  {
   printf("%2d ", i);
   num++;
   if (0 == num % 10)
    printf("\n");
  }
 }
 printf("\n");
}

void test2()//试除法(2)
{ 
 //思路:将所求出的素数保存起来,然后每次试除保存的这些素数
 const int Range = 100;
 const int num = (int)(Range / log(Range)*1.16); //素数定理(求一定范围内的所有素数个数)
 int* str = (int*)calloc(num, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值