| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1255 人关注过本帖
标题:怎么求小于m的最大的k个素数 ,还需要正序输出。
只看楼主 加入收藏
Baoshenglin
Rank: 2
等 级:论坛游民
帖 子:22
专家分:27
注 册:2013-3-2
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
怎么求小于m的最大的k个素数 ,还需要正序输出。
#include<stdio.h>
main()            
{
    int i,k,m,n;
    scanf("%d %d",&m,&k);
        for(n=0,m=m-1;n<k;m--)
        {for(i=2;i<m;i++)
           {if(m%i==0)break;
               }
         if(i==m)
           {printf("%d ",m);n++;
           }
    }
}
倒着输出我会,可将数据正序输出就不会了。
搜索更多相关主题的帖子: 最大的 
2013-03-02 21:04
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:8 
void main()            
{
    int i,k,m;
    scanf("%d %d",&m,&k);
    int mid = m / 2;
    bool bTrue = true;

    while (m > 0 && k > 0)
    {
        bTrue = true;
        for(i = 2; i < mid; i++)
        {
            if(m%i==0) {
                bTrue = false;
                break;
            }
        }

        if(bTrue)
        {
            printf("%d ",m);k--;
        }
        m--;
    }
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-02 21:20
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
C:\Users\yuccn>C:\code\test\vecter\Debug\vecter.exe
1000 20
997 991 983 977 971 967 953 947 941 937 929 919 911 907 887 883 881 877 863 859

C:\Users\yuccn>

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-02 21:21
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:0 
//这个可以从小到大取k个素数,但不是最大的k个素数
//我认为可以把素数用数组之类的存储起来,再取最大的k个素数
//毕竟从小到大取和从大到小取最大的k个素数是不一样的。
#include<stdio.h>
int main()            
 {
     int i,k,m,n,j;
     scanf("%d %d",&m,&k);
         for(n=0,j=2;j<m,n<k;j++)
         {for(i=2;i<m;i++)
            {if(j%i==0)break;
               }
          if(i==j)
            {printf("%d ",j);n++;
            }
     }
 }

[ 本帖最后由 shmilyflf 于 2013-3-2 21:34 编辑 ]
2013-03-02 21:31
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
用数组临时存储,或者递归

程序代码:
#include <math.h>
#include <stdio.h>

int Judge(int n)
{
    for (int i = 2; i <= (int)sqrt(double(n)); ++i)
        if (n % i == 0)    return 1;
    return 0;    
}

void test1(int m, int k)
{
    int i, a[20];
    for (i = 0; i < k && m > 2; ++i)
        while(Judge(a[i] = --m));
    for (--i; i >= 0; --i)
        printf("%d  ", a[i]);
}

void test2(int m, int k)
{
    if (!k || m <= 2) return;
    while(Judge(--m));
    test2(m, k-1);
    printf("%d  ", m);
}

int main()
{
    test1(1000, 20);puts("");
    test2(1000, 20);puts("");
    return 0;
}


[ 本帖最后由 azzbcc 于 2013-3-2 23:36 编辑 ]


[fly]存在即是合理[/fly]
2013-03-02 23:06
小xiong
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:388
专家分:1722
注 册:2013-2-8
收藏
得分:0 
呵呵,
2013-03-02 23:12
梦幻乐园
Rank: 2
等 级:论坛游民
帖 子:62
专家分:87
注 册:2012-10-25
收藏
得分:0 
用标志变量是一种方法,楼上的已经写出代码了。
也可以用数组的方法,还是用你的代码
#include<stdio.h>
main()            
{
    int i,k,m,n=0;
    scanf("%d %d",&m,&k);
        for(n=0,m=m-1;n<k;m--)
        {
          for(i=2;i<m;i++)
           if(m%i==0)break;
          if(i==m)
             a[n++]=m;
        }
       for(i=n;i>=0;i--)
         printf("%d",a[i]);
      return 0;
}
你试试行不
2013-03-03 10:01
好聚好散
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:138
专家分:123
注 册:2012-12-4
收藏
得分:2 
可以用一个数组先保存小于M的素数(需要记录素数的个数), 然后再输出后面K个

无节操,无真相
2013-03-03 11:01
快速回复:怎么求小于m的最大的k个素数 ,还需要正序输出。
数据加载中...
 
   



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

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