免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4984 | 回复: 26
打印 上一主题 下一主题

[C] 请教,感觉该题很偏,判断素数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-27 09:50 |只看该作者 |倒序浏览
判断素数,填写下划线处,将程序补全。功能:输入正整数,若素,显示,若非,不显示。
是一个朋友问的问题,我想了很久都找不到解决办法,怀疑可能是题目本身有问题。

不知道强行要解决的话是否有解,所以考虑能否在 for循环判断条件的地方使用一些技巧,但再在其中嵌入循环等东东仿佛c的语法不允许。
或许问题也很简单,太笨了没有想到吧,所以请大家提供一些思路,谢谢啦~~


#include <stdio.h>

int main()
{
    int x,i;
    scanf("%d", &x);
    for(i=2;_______________)
        break;
    if(i>=x)
        printf("%d 是素数~!",x);
        
    return 0;
}


[ 本帖最后由 sy5tem 于 2008-11-27 09:52 编辑 ]

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
2 [报告]
发表于 2008-11-27 09:53 |只看该作者
刚开始看错了,参见17楼。

[ 本帖最后由 yangsf5 于 2008-11-27 16:32 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-11-27 09:55 |只看该作者
难就难在那个break,摆在那个地方,使得循环条件满足的话,循环终止,循环条件不满足的话,又根本不执行继续的判断。

论坛徽章:
0
4 [报告]
发表于 2008-11-27 09:59 |只看该作者
直接编写一个完整的程序来判断素数到简单,但这里在横线上加语句就反而不好弄了。(我怀疑题目本身有问题,但为了多角度考虑,觉得或许有什么技巧可以解决)

论坛徽章:
0
5 [报告]
发表于 2008-11-27 10:02 |只看该作者

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int x,i;
  5.     scanf("%d", &x);
  6.     for(i=2;;i++) if (x%i==0)
  7.         break;
  8.     if(i>=x)
  9.         printf("%d 是素数~!",x);

  10.     return 0;
  11. }
复制代码

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
6 [报告]
发表于 2008-11-27 10:04 |只看该作者

回复 #3 sy5tem 的帖子

如果你朋友和你都没抄错题目的话,那这个就太高深了。。


我也看不懂,期待高人。。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
7 [报告]
发表于 2008-11-27 10:07 |只看该作者
原帖由 win_hate 于 2008-11-27 10:02 发表

#include

int main()
{
    int x,i;
    scanf("%d", &x);
    for(i=2;;i++) if (x%i==0)
        break;
    if(i>=x)
        printf("%d 是素数~!",x);

    return 0;
}



果然高,for的界限就由楼主补充了

[ 本帖最后由 yangsf5 于 2008-11-27 16:33 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-11-27 10:17 |只看该作者
while((i < x) && (i++/x))

论坛徽章:
0
9 [报告]
发表于 2008-11-27 10:30 |只看该作者
是不是题目中的break 应该是continue啊

#include <stdio.h>

int main()
{
    int x,i;
    scanf("%d", &x);
    for(i = 2; (x % i != 0) && (i <= x); i++)
        continue;
    if(i >= x)
        printf("%d 是素数~!", x);
        
    return 0;
}

论坛徽章:
0
10 [报告]
发表于 2008-11-27 10:32 |只看该作者
c语言的 while或for语句执行后不会得到一个值,即while或for语句整体本身不具备赋值功能,所以不能把它用到 for(i=2;_______;......) 的中间位置

这就使得该题仿佛无解一般~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP