| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 400 人关注过本帖
标题:(新手求教一个简单的函数)请问我这里哪里出问题啦?
只看楼主 加入收藏
tiancaizcx
Rank: 2
等 级:论坛游民
帖 子:25
专家分:19
注 册:2011-10-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
(新手求教一个简单的函数)请问我这里哪里出问题啦?
程序代码:
#include <stdio.h>
#include <conio.h>
su(int b)
{
    int i,j;
    i=b;
    for(j=2;j<=i/2;j++)
    {
        if(i%j!=0)
        printf("%d",i);
    }
}
main()
{  int a;
   for(a=101;a<=200;a++)
   {
       su(a);
       if(a%10==0)printf("\n");
   }
    getch();
}


输出的时候每个数都重复了10遍多
2011-11-17 10:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
这个简单 而且效率高 先把这个看懂了 筛选1000以内的素数
程序代码:
#include <stdio.h>

bool foot[1000] = {0};
int main()
{
    int i,j,k;
    for(i = 2;i<1000;i++)
    {
        if(!foot[i])
        {
            printf("%d\n",i);
            for(j = 2;i*j<1000;j++)
                foot[i*j] = 1;
        }
    }
    return 0;
}

 

                                         
===========深入<----------------->浅出============
2011-11-17 10:49
tiancaizcx
Rank: 2
等 级:论坛游民
帖 子:25
专家分:19
注 册:2011-10-21
收藏
得分:0 
bool foot[1000] = {0};
这句看不懂,bool是啥?
2011-11-17 10:59
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
bool 是C++中布尔类型。

我们都在路上。。。。。
2011-11-17 11:13
tiancaizcx
Rank: 2
等 级:论坛游民
帖 子:25
专家分:19
注 册:2011-10-21
收藏
得分:0 
回复 2楼 laoyang103
你好,你的那个我大概能看懂~~
可不可以帮我看下,我输出到底出什么问题啦,谢谢啊
2011-11-17 11:22
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:10 
你这个判断是否素数的算法不对
你这个算法的话,如果是105 j 为2的时候,105%2就不等于0了,而105不是素数。
程序代码:
#include <stdio.h>
#include <conio.h>
su(int b)
{
    int j;
    static i=0;         //形参b可以直接在该函数中使用,不需赋值给其他变量再使用  
    for(j=2;j<b/2;j++)    
        if(b%j==0) break;      //算法错误,这样表示只有能除尽,就是非素数,
                                //直到j的值为比b的一半小1的时候都除不尽,才表示是素数
        if(j>=b/2) 
        {
            printf("%4d",b);i++;      //用i来表示该数是素数,以便统计素数的个数
            if(i%10==0)printf("\n"); 
        }                              //记数i,没10个数换行
}
main()
{  int a,i=0;
   for(a=101;a<=200;a++)
   {
      su(a);  //这里su(a)就直接调用了函数su()
              //用于记数换行的要在判断素数后面,不然,你把每10个换行改成没5个换行就知道原因了      
   }    
}


[ 本帖最后由 luchar 于 2011-11-17 14:14 编辑 ]
2011-11-17 14:13
快速回复:(新手求教一个简单的函数)请问我这里哪里出问题啦?
数据加载中...
 
   



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

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