| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 937 人关注过本帖
标题:判断素数一个小问题
只看楼主 加入收藏
longhu945
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-3-23
结帖率:100%
收藏
 问题点数:0 回复次数:4 
判断素数一个小问题
#include<stdio.h>
#include<math.h>

void main()
{
    int m,k,i;
    scanf("%d",&m);
    k=sqrt(m);/*取所输入值一半的范围,因为能被整除那么就会
                有一半因子在这里面*/
    for(i=2;i<=k;i++)
    {
        if(m%i==0)
        {
            break;
        }
    }
    if(i>k)//这里不是很懂 整个循环运行完为什么会是i>k
        {
        printf("YES\n",m);
        }
    else
    {
    printf("No\n",m);
    }
}
搜索更多相关主题的帖子: include 
2016-03-24 16:50
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
如果一直不能满足if(m%i==0),那么循环结束后,i=k时还会执行一次i++
2016-03-24 16:58
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
想想上面那个break里面的作用是什么?如果能整除的数,i最大只能到k,这时候m就不是素数了,反之没有能整除的数,i会累加到k+1,即i>k,m就是素数。你应该再熟悉下for的执行过程,还有你的程序有错误的地方。

   唯实惟新 至诚致志
2016-03-24 16:58
longhu945
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-3-23
收藏
得分:0 
回复 3楼 qq1023569223
刚刚想出来了这个运行过程,确实是for语句不是很通透,现在是明白了。
还有我的程序哪里出错了?我在VC++6.0上能运行。
2016-03-24 17:06
longhu945
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-3-23
收藏
得分:0 
回复 2楼 grmmylbs
虽然我现在懂了,不过还是要感谢你。谢谢
2016-03-24 17:07
快速回复:判断素数一个小问题
数据加载中...
 
   



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

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