| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 795 人关注过本帖
标题:大于m的素数判断的问题
只看楼主 加入收藏
源本云明
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-7-1
结帖率:0
收藏
 问题点数:0 回复次数:3 
大于m的素数判断的问题
各位同仁,空闲之际,我自己编写了如下一段小程序。
我的意图是:打印出大于m的k个素数。
我的算法是:先输入整数m和k,并判断是否正数,然后从m+1开始判断某个数是否素数,如果是,则将其保存到数组a[]并打印。
我是在VC++里运行的,运行结果如附图1:后来增大个数k的值,输出结果也是错误的,意思是所有大于m的奇数都会被打印出来。请问各位问题出在哪里?请指教一二,鄙人谢过!
程序源代码如下:
#include "stdio.h"
#include "math.h"
int sushu(int n)
{
    int i,k,flag=1;
    k=(int)sqrt(n);
    for(i=2;i<=k;i++)
     if(n%i==0){break;flag=0}
    else flag=1; (把这句话注释了以后还是一样的效果!)
    return(flag);
}
void main()
{
    int i,j=0,k,s=0,m,n,a[1000];
    printf("请输入范围数最小值m:\n");
    scanf("%d",&m);
    //printf("%d",m);
    if(m<=0)printf("此范围无意义!\n");
    else
    {
        printf("请输入素数个数k:\n");
        scanf("%d",&k);
        if(k<=0)printf("个数格式出错,请重新输入!\n");
        else
           {
            if(m%2==0)n=m+1;else n=m+2;
            for(i=n;i<10000;i+=2)
         if(sushu(i)){++s;a[s-1]=i;if(s==k)break;}
         for(i=0;i<k;i++)
          {++j;printf("%5d",a[i]);
            if(j%6==0)printf("\n");
          }
           }
    }
}
搜索更多相关主题的帖子: 素数 判断 
2010-07-02 08:36
xiaweiqiang
Rank: 2
等 级:论坛游民
帖 子:27
专家分:82
注 册:2010-7-1
收藏
得分:0 
#include "stdio.h"
#include "math.h"
int sushu(int n)
{
    int i,k,flag=1;
    k=(int)sqrt(n);
    for(i=2;i<=k;i++)
    if(n%i==0)
    {
        flag=0;
        break;
    }
    else flag=1; //(把这句话注释了以后还是一样的效果!)
    return(flag);
}
void main()
{
    int i,j=0,k,s=0,m,n,a[1000];
    printf("请输入范围数最小值m:\n");
    scanf("%d",&m);
    //printf("%d",m);
    if(m<=0)printf("此范围无意义!\n");
    else
    {
        printf("请输入素数个数k:\n");
        scanf("%d",&k);
        if(k<=0)printf("个数格式出错,请重新输入!\n");
        else
           {
            if(m%2==0)n=m+1;else n=m+2;
            for(i=n;i<10000;i+=2)
         if(sushu(i)){++s;a[s-1]=i;if(s==k)break;}
         for(i=0;i<k;i++)
          {++j;printf("%5d",a[i]);
            if(j%6==0)printf("\n");
          }
           }
    }
}      好像解决过一个一样的问题
2010-07-02 08:48
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
楼主犯了一个不该犯的错误! if(n%i==0){break;flag=0} break直接跳出了,根本不执行flag=0,也就是说顺序颠倒了
2010-07-02 18:58
源本云明
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-7-1
收藏
得分:0 
多谢各位!感激不尽!
2010-07-03 10:26
快速回复:大于m的素数判断的问题
数据加载中...
 
   



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

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