鱼C论坛

 找回密码
 立即注册
查看: 3108|回复: 2

判断素数的程序,输入字符后,死循环。

[复制链接]
发表于 2016-11-11 12:16:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
判断素数的程序,一旦输入字符就可能死循环。求在不改变求素数功能的情况下,解决死循环的办法。最好能判断输入的是非法字符,从而让程序报错。谢谢各位了!!!
代码如下

#include <stdio.h>
#include <stdlib.h>

int main()
{
        int a,n,b;
        float sz;

        printf("请输入一个正整数\n");
        scanf("%f",&sz);
        b=0;
        while(sz < 0||sz != (int)sz)
        {       
                printf("输入错误\n请输入一个小于20亿的正整数\n");
                scanf("%f",&sz);
        }
        (int)sz;
        if(sz == 1 ||sz == 0 )
        {printf("您输入的数既不是素数也不是合数\n");}
        else{
        a=2;
        n=1;
        if(sz == 2)
        {printf("您输入的数是素数\n");}
        else
        {while((int)sz%a != 0)
        {
                a=2*n+1;
                n=n+1;
        }
        if(sz == a)
        {printf("您输入的数是素数\n");}
        else
        {printf("您输入的数是合数\n");}
        }}
        system("pause");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-11 13:07:03 | 显示全部楼层
为什么要用浮点数呢?

以前我记得测试过,

float f = 1;
if (1 == f)
{
//这里不一定进的来
}

楼主有兴趣可以搜索一下浮点数在内存中的存储形式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 15:54:37 | 显示全部楼层
n0noper 发表于 2016-11-11 13:07
为什么要用浮点数呢?

以前我记得测试过,

不是可能进不来。。应该是一定进不来的,计算机保存浮点数是有误差的。。如果要这么做的话
fabs(f)-fabs(1)<1e-6;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表