各位大佬看看我这c语言写的判定素数程序错在哪

weixin_45939960 2019-11-27 11:18:00
#include <stdio.h> int main() { int n; int S(int n); printf("输入任意一个整数"); scanf("%d",&n); printf("\n"); S(n); return 0; } int S(int n) { int i,a; { for(i=2; i<n; i++) if(n%i==0) a=0; else a=1; } switch(a) { case '0': printf("%d不是素数",n); break; case '1': printf("%d是素数",n); break; } }
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45939960 2019-11-28
  • 打赏
  • 举报
回复
引用 2 楼 fireyou的回复:

for (i = 2; i < n; i++)
        {
            if (n%i == 0)
            {
                a = 0;
                break;//这里跳出循环
            }
            else
            {
                a = 1;
            }
        }
case 0: case 1: 不要加引号
但我在加了break;之后就显示我的else前没有if
自信男孩 2019-11-28
  • 打赏
  • 举报
回复
switch(a) {
case '0': //改成0
printf("%d不是素数",n);
break;
case '1': //改成1
printf("%d是素数",n);
break;
}


注意下,0和'0'对于十进制是有差值的,其实不是相等的。'0'是0x30即,48;
fireyou 2019-11-28
  • 打赏
  • 举报
回复

for (i = 2; i < n; i++)
        {
            if (n%i == 0)
            {
                a = 0;
                break;//这里跳出循环
            }
            else
            {
                a = 1;
            }
        }
case 0: case 1: 不要加引号
「已注销」 2019-11-28
  • 打赏
  • 举报
回复
因为你在判断之后并没有中断还会继续运行循环,也就是虽然9%3==0了但是还会继续判断9%4,9%5,……。
fireyou 2019-11-28
  • 打赏
  • 举报
回复
你看看我写的。用大括号括起来啊。
引用 4 楼 weixin_45939960 的回复:
[quote=引用 2 楼 fireyou的回复:]

for (i = 2; i < n; i++)
        {
            if (n%i == 0)
            {
                a = 0;
                break;//这里跳出循环
            }
            else
            {
                a = 1;
            }
        }
case 0: case 1: 不要加引号
但我在加了break;之后就显示我的else前没有if[/quote]

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧