标题:这个列出素数的程序错在哪?
只看楼主
greenpop
Rank: 1
等 级:新手上路
帖 子:73
专家分:3
注 册:2011-12-22
结帖率:88.24%
已结贴  问题点数:20 回复次数:4 
这个列出素数的程序错在哪?
#include<stdio.h>
#include<math.h>

int sushu(int p)
{
    int j,k;
    k=sqrt(p);
    for(j=2;j<=k;j++)
        if(p%j==0)
        {
            return 0;
        }
        else
        {
            return 1;
        }
}

int main()
{
    int m,n,i,t;
    printf("请输入起止整数:\n");
    scanf("%d%d",&m,&n);
    if(n>m)
    {
        t=n;
        n=m;
        m=t;

    }
    for(i=n;i<=m;i++)
     {
         if(sushu(i))
        printf("%d\t",i);
     }
    return 0;
}
程序用来列出n到m间的素数。可是却给出了所有奇数。请教各位老师,问题出在哪?谢谢。
搜索更多相关主题的帖子: 素数 include int for return 
2019-06-06 10:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
没更改你的算法

程序代码:
#include <stdio.h>

_Bool sushu( int p )
{
    if( p < 2 )
        return 0;

    for( int i=2; i*i<=p; ++i )
    {
        if( p%i == 0 )
            return 0;
    }
    return 1;
}

int main( void )
{
    int n, m;
    printf( "请输入起止整数:" );
    scanf( "%d%d", &n, &m );

    if( n > m )
    {
        int t = n;
        n = m;
        m = t;
    }

    for( int i=n; i<=m; ++i )
    {
        if( sushu(i) )
            printf( "%d\t", i );
    }
}



[此贴子已经被作者于2019-6-6 11:17编辑过]

2019-06-06 11:15
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:7 
我也来个哈
程序代码:
#include<stdio.h>
#include<math.h>

int sushu(int p)
{
    int j,k;
    k=sqrt(p);
    for(j=2;j<=k;j++)
    {
        if(p % j == 0)
        {
            break;
        }
    }
    if(j > k)
    {
        return 1;
    }
    else
    {
        return 0;
    }
        
}

int main()
{
    int m,n,i,t;
    printf("请输入起止整数:\n");
    scanf("%d%d",&m,&n);
    if(n>m)
    {
        t=n;
        n=m;
        m=t;

    }
    for(i=n;i<=m;i++)
     {
         if(sushu(i))
        printf("%d\t",i);
     }
    return 0;
}

代码输出:
请输入起止整数:
2 100
2       3       5       7       11      13      17      19      23      29
31      37      41      43      47      53      59      61      67      71
73      79      83      89      97

借用一下侯捷的话:勿在浮沙筑高台。
2019-06-06 11:27
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:7 
if(n>m) {
        m=m+n;
        n=m-n;
        m=m-n;
}
自定义函数sushu循环步长太小,可以遍历当前打印的素数对其取模

剑栈风樯各苦辛,别时冰雪到时春
2019-06-06 12:01
greenpop
Rank: 1
等 级:新手上路
帖 子:73
专家分:3
注 册:2011-12-22
得分:0 
谢谢各位大师。
2019-06-06 18:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495129-1-1.html




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

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