| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 244 人关注过本帖
标题:这个列出素数的程序错在哪?
只看楼主 加入收藏
greenpop
Rank: 1
等 级:新手上路
帖 子:44
专家分:3
注 册:2011-12-22
结帖率:94.44%
  已结贴   问题点数: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间的素数。可是却给出了所有奇数。请教各位老师,问题出在哪?谢谢。
2019-06-06 10:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:306
帖 子:6368
专家分:36996
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:61
专家分:225
注 册: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
来 自:湖南
等 级:版主
威 望:123
帖 子:1894
专家分:8283
注 册: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
等 级:新手上路
帖 子:44
专家分:3
注 册:2011-12-22
  得分:0 
谢谢各位大师。
2019-06-06 18:48







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

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