回 帖 发 新 帖 刷新版面

主题:求素数 求助

输出两个数之间的素数,小弟才学的C,写了段有问题 望指点,高手勿笑

#include<stdio.h>
#include<stdlib.h>
main()
{
    printf("please input 2 number:\n");
    int a,b;
    scanf("%d,%d",&a,&b);
    int i;
    i=a;
    while(i<=b)
        {
        if(sushu(a))
        printf("%2d",i);
        i++;
        }
}

int sushu(int x)
{
    int p,q;
    p=2;
    while(p<=x/2)
        {
        if(x%p==0)
            {
            q=0;
            break;
            }
        else
            {
            p++;
            q=1;
            }
        }
    return(q);
}


注:
存在以下问题:1.我随便输入两个数 前面的数小 后面的数大如 2,10,输出的结果却是 2到10之间的所有数。
           2.我用的LINUX系统编译的。是不是windows系统下编译的C和Linux 系统下编译的C 和很大的差别?

回复列表 (共4个回复)

沙发

还好,比较直接的方法,这是一般新手最容易想到的方法。
提点意见:
   算法复杂度有点高,你是对A到B之间每个数都扫描了,且每个数你基本上都是靠定义证明其是素数。
   另外,如果有代码要重复此操作,那每次都要进行判断。运行结果的重复利用性比较底。

板凳

[quote]还好,比较直接的方法,这是一般新手最容易想到的方法。
提点意见:
   算法复杂度有点高,你是对A到B之间每个数都扫描了,且每个数你基本上都是靠定义证明其是素数。
   另外,如果有代码要重复此操作,那每次都要进行判断。运行结果的重复利用性比较底。[/quote]
不好意思我刚才没说明错误内容,能不能帮无找下错误在哪里啊,小弟 是在是找不出错误在哪,新手学点东西不容易啊。

3 楼


哎。终于找到了。粗心要人命啊。if(sushu(a))改成if(sushu(i))就行了。谢谢这位大哥。我怎么感觉论坛上的人好少一样,帖子都晒半天了,还是我的问题太弱智了。

4 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册