| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9594 人关注过本帖
标题:关于一个求N个数之内所有素数的问题
只看楼主 加入收藏
lastrobber
Rank: 2
来 自:廊坊
等 级:论坛游民
帖 子:26
专家分:52
注 册:2010-12-30
结帖率:100%
收藏
 问题点数:0 回复次数:11 
关于一个求N个数之内所有素数的问题
RT,自己写的代码,然后调试,修改,实在想不出来哪里出错了,输出的结果不正确,在这里请教各位大大,小弟水平有限,勿喷。
下面是代码:
#include<stdio.h>
#include<math.h>
int sushu()
{
    int num=100,mod,i,j;    /*i控制外循环,j控制内循环*/
    for(i=2;i<=num;i++)        /*最外层循环,从2开始,到所定义的num为止*/
    {
        mod=sqrt(i);        /*对将要判断的数作开平方运算,减少判断次数*/
        if(i==2)
        {
            printf("  %d  ",i);
        }
        for(j=2;j<=mod;j++)    /*循环,次数为mod+1-2=mod-1*/
        {
            if(i%j!=0)
            {
                printf("  %d  ",i);
                break;        /*跳出循环体*/
            }
        }
    }
    printf("\n");
    getch();
}
int main()
{
    sushu();
}

搜索更多相关主题的帖子: include 
2011-11-08 17:08
lastrobber
Rank: 2
来 自:廊坊
等 级:论坛游民
帖 子:26
专家分:52
注 册:2010-12-30
收藏
得分:0 
自己先坐个沙发,在这里坐等高手解答
2011-11-08 17:14
黑色流星
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2010-5-16
收藏
得分:0 
         for(j=2;j<=mod;j++)    /*循环,次数为mod+1-2=mod-1*/
        {
            if(i%j!=0)
            {
                printf("  %d  ",i);
                break;        /*跳出循环体*/
            }
        }
这里不太对,j在这里从2开始试起,不能一不整除就输出。打个比方,如果是25,j=2时25%2!=0,输出25.错了。
2011-11-10 17:37
凌风一指
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:26
专家分:181
注 册:2011-11-9
收藏
得分:0 
我感觉是逻辑错误,我看了看,没有看明白。
这里有一个别人写的,你参考一下吧!
int i,j,n=100;
    int num=0;
    for(i=2;i<=n;i++)
    {
        for(j=2;j<=i-1;j++)
        {
            if(i%j==0)
                break;
        }
        if(j>=i)
        {
            printf("%d\t",i);
            num++;
        }
        if(num%10==0)
            printf("\n");
    }
2011-11-10 18:57
rptina
Rank: 2
等 级:论坛游民
帖 子:7
专家分:27
注 册:2011-10-24
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void sushu()
{
    int num=100,mod,i,j,count=0;   
    for(i=2;i<=num;i++)        
    {
        mod=(int)sqrt(i);        
            for(j=2;j<=mod;j++)   
              if(i%j==0)
                 count++;
        if(count==0)
            printf("  %d",i);
        count=0;
    }
    printf("\n");
    getch();
}
int main()
{
   
    sushu();
    return 0;
}

2011-11-10 21:33
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
注意效率

                                         
===========深入<----------------->浅出============
2011-11-10 21:39
小先生
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2011-11-4
收藏
得分:0 
#include<stdio.h>
main()
{
int i,j,n=100;
     int num=0;
     for(i=2;i<=n;i++)
     {
         for(j=2;j<=i-1;j++)
         {
             if(i%j==0)
                 break;
         else printf("%d",i);
         }
     }
}
j的初始值也可以是3 然后j=j+2  因为素数不是偶数
2011-11-10 22:24
lastrobber
Rank: 2
来 自:廊坊
等 级:论坛游民
帖 子:26
专家分:52
注 册:2010-12-30
收藏
得分:0 
谢谢各位了,这几天有些忙,没有顾得上上论坛,谢谢了
2011-11-12 21:59
lvmp520
Rank: 2
等 级:论坛游民
威 望:1
帖 子:18
专家分:24
注 册:2011-11-12
收藏
得分:0 
回复 3楼 黑色流星
上面还有个for的循环嘛, 那个也有用的   就像你说的25   它除以2是不等于0  但他有上面的for语句  他会继续执行直到for语句结束    最后才输出
2011-11-13 00:21
lvmp520
Rank: 2
等 级:论坛游民
威 望:1
帖 子:18
专家分:24
注 册:2011-11-12
收藏
得分:0 
回复 楼主 lastrobber
for(j=2;j<=mod;j++)    /*循环,次数为mod+1-2=mod-1*/


我是不知道 出错在哪了  但我看书的好像要     j>mod   我也不知道为什么
2011-11-13 00:23
快速回复:关于一个求N个数之内所有素数的问题
数据加载中...
 
   



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

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