| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 378 人关注过本帖
标题:新手第一帖 求助各位大大
只看楼主 加入收藏
蚂蚁小兵
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-9-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
新手第一帖 求助各位大大
小弟初学C 今天遇一障碍怎么也想不通 还请各位大大耐心看完指点下
 题目是要求101-200之间的素数 算法是用这个数分别除2到这个数加1的平方根范围内的每一个数,如果能被整除,则表明此数不是素数,反之则是素数。
 

这是书上给的代码:

    #include<stdio.h>
    #include "math.h"
    void main()
    {
        int m,i,k,h=0,leap=1;
        printf("\n");
        for(m=101;m<=200;m++)            
        {
            k=sqrt(m+1);                    
            for(i=2;i<=k;i++)               
            if(m%i==0)                    
            {
                leap=0;break;
            }
            if(leap)
            {
                printf("%-4d",m);h++;
                if(h%10==0)
                {
                    printf("\n");
                }
            }
            leap=1;
        }
        printf("\nThe total is %d",h);
    }
这是我自己写的代码 :

#include "stdafx.h"
#include "math.h"
#include "stdio.h"
void main()
{
    int i,m,h=0;
    double k;
    for(m=101;m<=200;m++)
    {
        k=sqrt(m+1);
        for(i=2;i<=k;i++){
            if(m%i==0)
            {
                break;
            }
            
    else
   
   
        printf("%d ",m);
        h+=1;
        break;
   

    }
     
    }   
   printf("\nThe total is %d",h);
}
为什么我自己写这个求出的不是素数而是奇数啊。。。。头痛一上午了。。。。
搜索更多相关主题的帖子: include 平方根 
2010-09-21 12:54
蚂蚁小兵
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-9-21
收藏
得分:0 
没有人么
2010-09-21 13:11
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:6 
有 但是看不明白 对不起

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-21 13:16
蚂蚁小兵
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-9-21
收藏
得分:0 
等啊等啊等啊等啊等啊
2010-09-21 13:50
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:6 

//#include "stdafx.h"
#include "math.h"
#include "stdio.h"
void main()
{
    int i,m,h=0;
    double k;
    for(m=101;m<=200;m++)
    {
        k=sqrt(m+1);
        for(i=2;i<=k;i++)           //这里就不规范,k是double型,i是int型;改:for(i=2;i<=(int)k;i++)           
     {            
            if(m%i==0)
            {
                break;
            }
            
    //else                  //这里如果i执行一次,m不能被i整除,就输出m.那你的for(i=2;i<=k;i++)就没意义了。改:if(i==(int)k)
    if(i==(int)k)
     {
        printf("%d ",m);
        h+=1;
        brea;}
    }
     
    }   
   printf("\nThe total is %d",h);
}
2010-09-21 14:29
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:6 
兄弟你用整型与浮点型进行比较!    double k;     for(m=101;m<=200;m++)     {         k=sqrt(m+1);         for(i=2;i<=k;i++){

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-21 14:33
快速回复:新手第一帖 求助各位大大
数据加载中...
 
   



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

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