| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1266 人关注过本帖, 1 人收藏
标题:数组的应用!!
只看楼主 加入收藏
dqwybzb
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-11-24
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:3 
数组的应用!!
求大于m并且紧跟m的n个素数,并存入数组中,输出。
搜索更多相关主题的帖子: 大于 输出 应用 数组 存入 
2020-11-24 16:13
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:7 
我个人只想到两种方法,第一是建立素数库,判断m的值在哪,输出后N个数就行
第二是对>m的每个值进行判断其是否为素数。
前者属于一次运行,终身收益,后者随取随用,除却第一次比前者所需时间少,后面每次的运行时间都是要大些的


补充,可以考虑采取第二种方式,每一次运行都进行一次存储(排序),第二次判断m的值是否在存储的数组之间,在的话可以先提取,再判断,久而久之素数库越来越充分,自然所需时间也越来越少

[此贴子已经被作者于2020-11-24 17:08编辑过]


穷举是最暴力的美学
2020-11-24 17:04
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
收藏
得分:7 
回复 楼主 dqwybzb
此题实际上就给定了求素数范围的左边界,而右边界则变相给定,程序如下:
程序代码:
#include<stdio.h>

void main()
{
    int m;                         // 给出素数的左边界
    int n,s = 0;
    int i, j, k = 0;

    scanf("%d%d", &m, &n);
    int p[n];                      // VS2015好像不支持变长数组,为此这里可设为 10000 (根据 n 值来设就行)
    for (i = m;i < 100000000;i++)  // 不可以 m + n 作为右边界,因为其中的数不一定就是素数
    {
        for (j = 2;j < 100000000;j++)
        {
            if (i % j == 0)
                break;
        }
        if (i == j)
        {
            p[s] = i;              // 求得素数,存入数组
            s++;
            k++;
        }
        if (n == k)
            break;
    }
    printf("\n");
    for (i = 0;i < n;i++)         // 此时数组的右边界是确定的
        printf("%d ",p[i]);
    printf("\n");
}
2020-11-25 00:20
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:566
专家分:3690
注 册:2019-7-29
收藏
得分:7 
程序代码:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

void main()
{
    unsigned int m,n,*p,count=0,j,k;
    scanf("%d %d",&m,&n);
    p=(unsigned int *)malloc(n*sizeof(unsigned int));

    while(count<n)
    {
        ++m;
        k=(int)sqrt(m);
        for(j=2;j<=k;j++)
            if(m%j==0)
                break;
        if(j>k)
        {
            *(p+count)=m;
            ++count;
        }
    }

    for(j=0;j<n;j++)         // 此时数组的右边界是确定的
        printf("%d ",p[j]);
    printf("\n");

    free(p);
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-11-25 14:52
快速回复:数组的应用!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031500 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved