1137 C/C++经典程序训练7---求某个范围内的所有素数

 

题目描述

求小于n的所有素数,按照每行10个显示出来。

输入

输入整数n(n<10000)。

输出

每行10个依次输出n以内的所有素数。如果一行有10个素数,每个素数后面都有一个空格。

示例输入

100

示例输出

2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
 

 

#include<stdio.h>
#include<math.h>
void main()
{
   int m,k,n,i,count=0;
   scanf("%d",&n);
   if(n<=10000)
   {
    for(m=2;m<=n;++m)
    {
      k=sqrt(m);
      for(i=2;i<=k;i++)
        if(m%i==0) 
           break;
        if(i>=k+1)
        {
          printf("%d ",m);
          count++;
          if(count%10==0)
             printf("\n");
        }
    }
    printf("\n");
   }
}

素数筛

#include<stdio.h>
#include<string.h>
int main()
{
    int i, j,m,e;
    int pi = 0;
    int primes[1000],flag[1000];
    memset(flag,0 ,sizeof(flag));
    scanf("%d",&m);
    for (i = 2; i < m; i++)
    {
        if (!flag[i])
            primes[pi++] = i;
        for (j = 0; (j < pi)  && (i * primes[j] < m); j++)
        {
            flag[i * primes[j]] = 1;
            if (i % primes[j] == 0)
                break;
        }
    }
    e=0;
    for(i=0; i<pi; i++)
        {

            printf("%d ",primes[i]);
            e++;
            if(e%10==0)
        printf("\n");
    }

    return 0;
}


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是某个范围内的所有素数C++代码: ```c++ #include <iostream> using namespace std; bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i * i <= n; i++) { if (n % i == ) return false; } return true; } int main() { int start, end; cout << "请输入范围的起始值和结束值:"; cin >> start >> end; cout << "范围内的素数有:"; for (int i = start; i <= end; i++) { if (isPrime(i)) cout << i << " "; } cout << endl; return ; } ``` 该程序首先定义了一个函数`isPrime`,用于判断一个数是否为素数。然后在`main`函数中,先输入范围的起始值和结束值,然后遍历这个范围内的所有数,对于每个数,调用`isPrime`函数判断是否为素数,如果是素数则输出。 ### 回答2: 素数就是只能被1和它本身整除的正整数,而非素数则是其他的正整数。某个范围内所有素数的题目,需要使用素数判定法来解决。 首先,我们可以遍历这个范围内的所有数字,从2开始,因为1不是素数。对于每一个数字,我们再判断它是否是素数。判断它是否是素数的方法是,从2到它本身的数字中,逐个去尝试整除,如果存在整除的情况,则它不是素数。如果2到它本身之间都没有整除的情况,则它是素数。 为了优化时间效率,我们可以每次判断一个数字时,将它之前已经判断出来的所有素数保存下来,然后用这些素数去尝试整除,如果都不能整除,则它也是素数。 具体实现上,我们可以使用一个Boolean类型的数组来记录每个数字是否是素数,初始化时都置为true,然后从2开始遍历,如果遍历到的数字没有被标记为false,那么就标记它为true,并遍历它的倍数,将它们都标记为false。 最后,我们可以遍历这个数组,输出所有被标记为true的数字,它们就是我们要范围内的所有素数。 总之,某个范围内所有素数的问题,可以通过素数判定法来解决。在实现中,需要遍历范围内的所有数字,再用素数判定法来判断是否为素数,最后输出素数即可。 ### 回答3: 素数,也就是质数,是指只能被1和本身整除的正整数。而某个范围内的所有素数,则需要遍历这个范围内的每一个正整数,并判断其是否为素数。 一般来说,判断一个正整数是否为素数的方法有很多种,包括试除法、筛法等。在本次练习中,我们采用试除法来判断素数。 试除法是指,对于一个大于1的正整数n,从2开始倒序遍历到√n,如果在这个范围内存在一个数m,使得n能够整除m,那么n就不是素数,否则n就是素数。 因此,我们可以利用这个方法来某一范围内的所有素数。具体实现步骤如下: 1. 输入一个范围,比如[1,100]; 2. 对于这个范围内的每一个正整数n,进行试除法判断,如果n是素数,则将其输出; 3. 完成对整个范围的遍历后,输出所有的素数。 以下是对应的Python代码实现: ``` import math def is_prime(n): if n <= 1: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True start = int(input("请输入起始值:")) end = int(input("请输入结束值:")) for num in range(start, end+1): if is_prime(num): print(num, end=' ') ``` 以上代码中,is_prime函数用来判断是否为素数,start和end分别表示给定的范围的起始值和结束值。最终的输出结果为给定范围内的所有素数。 需要注意的是,对于大范围素数计算可能需要进行优化,比如使用更快速的筛法等算法。但对于此练习题来说,使用试除法已经可以满足要
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值