标题:小白感谢,求素数的问题。
只看楼主
chwn1985
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-12-6
结帖率:100%
已结贴  问题点数:20 回复次数:9 
小白感谢,求素数的问题。
新人自己尝试做素数判断,但是一直得不到结果;
我的逻辑是:随机输入a,0<b<a,a%b取余不等于0,即可判断a为素数。其余为合数;
我尝试用while做循环;
我该如何判断余数?
另外,我这个代码逻辑有没有问题,特别是while里面的循环条件?
感谢。
程序代码:
#include<stdio.h>
int main(void)
{
    int a, b,c;
    printf("请输入一个数字:\n");
    scanf_s("%d", &a);
    b = 2;    
    while (b<a&&a>2)
    {    
        c = a%b;
        b++;        
    }
    // 假如c=0,则输出“合数”;
        否则,“素数”;
    return 0;
}
搜索更多相关主题的帖子: 素数 输入 while int 判断 
2019-12-13 10:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
完全根据你的代码改写的,算法没变
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    printf( "请输入一个数字: " );
    scanf( "%u", &n );

    _Bool isprimer = 1;
    for( unsigned i=2; i<n; ++i )
    {
        if( n%i == 0 )
        {
            isprimer = 0;
            break;
        }
    }

    puts( isprimer ? "素数" : "合数" ); // 0和1既非素数又非合数
}

2019-12-13 10:40
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:5 
你的while整除以后并不停下,会一直算到n-1
所以错了

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2019-12-13 10:42
chwn1985
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-12-6
得分:0 
回复 2楼 rjsp
感谢。
不过,我刚开始自学,还没接触这么深。
目前只有while、if和for函数。
数组刚开始学。
所以,您写这个代码里面的表达,有些地方我看不懂。
感谢。
2019-12-13 14:18
chwn1985
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-12-6
得分:0 
回复 3楼 forever74
对。
我是想让他除到a-1.
在所有的结果里,核查c是否等于0.
一旦c=0,就可以输出“合数”;
c!=0的话,就输出“素数”;
这应该是又是一个循环的问题吧。
我有点糊涂,不知道这个是否能表达出来;
2019-12-13 14:22
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:5 
这个你不是没有加入判断c的值么?自然就没办法的出结果
可以把c的值先赋个1然后并在while的判断语句中,如果c为0 ,退出循环,否则循环到a-1
2019-12-13 16:14
chwn1985
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-12-6
得分:0 
回复 6楼 bcbbcclbbc
感谢;
好多基础问题,我可能没搞清楚。
我先继续学习一段时间再回头看这个问题吧。
感谢。
2019-12-14 09:57
wolf_55555
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:33
注 册:2019-6-14
得分:5 
#include<stdio.h>
int main(void)
{
    int a, b,i=0;
    printf("请输入一个数字:\n");
    scanf_s("%d", &a);
    b = 2;   
    while (b<a&&a>2)
    {   
        if(a%b == 0)
        {
            printf("合数\n") ;
            i=1;
            break;
         }
        else
        b++;        
    }
if(i=0)
    printf("素数\n");
    return 0;
}

//这个能看懂吧!

[此贴子已经被作者于2019-12-16 00:38编辑过]

2019-12-15 23:54
chwn1985
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-12-6
得分:0 
回复 8楼 wolf_55555
运行不出来百分百结果;
感谢。
2019-12-17 15:11
wolf_55555
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:33
注 册:2019-6-14
得分:0 
#include<stdio.h>
int main(void)
{
    int a, b,i=0;
    printf("请输入一个数字:\n");
    scanf_s("%d", &a);
    b = 2;   
    while (b<a&&a>2)
    {   
        if(a%b == 0)
        {
            printf("合数\n") ;
            i=1;
            break;
         }
        else
        b++;        
    }
if(i==0)
    printf("素数\n");
    return 0;
}
2019-12-24 15:01



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




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

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