| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 624 人关注过本帖
标题:请问一下,好心人进来
只看楼主 加入收藏
Tchong
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2008-10-17
结帖率:100%
收藏
 问题点数:0 回复次数:6 
请问一下,好心人进来
#include <stdio.h>
#include <math.h>
void main()
{
    int i,j,k;
    for(i=2;i<=100;i++)
    {
        k=sqrt(i);
        for(j=2;j<=k;j++)
        {
            if(i%j==0)
            {
                break;
            }
            
        }
        if(j>=k+1)
        {
            printf("%d ",i);
        }
    }
}
这个程序中的k=sqrt(i)有什么用和if(j>=k+1)又有什么用:而这一步又 for(j=2;j<=k;j++)
        {
            if(i%j==0)
            {
有什么作用呢,小弟很菜,真的看不懂,请好心人告诉我。上面的程序是计算2到100的素数的
搜索更多相关主题的帖子: include 
2008-12-07 15:38
浅默
Rank: 1
等 级:新手上路
帖 子:18
专家分:7
注 册:2007-12-8
收藏
得分:0 
#include <stdio.h>
#include <math.h>
void main()
{
    int i,j,k;
    for(i=2;i<=100;i++)
    {
        k=sqrt(i);           /*这是应该是通过开方减少下面j的循环量,提高效率.*/
        for(j=2;j<=k;j++)    /*这里是通过循环得到一个j的值,如果i%j==0这个条件
                                成立,就退出循环,那么这时j的值一定是小于等于k的
                                这里是为下一条循环语句作准备.*/
        {
            if(i%j==0)      /*经过上面的一条循环语句的处理,这时j的值会有两种
                              可能,如果是(j>=k+1)那么就证明上面的(i%j==0)不
                               成 立(如果成立的话就会执行break;语句而退出
                               循环,使j的值停在小于k的壮态)
                              那么这时打印出的i就是素数了.*/
            {
                break;
            }
            
        }
        if(j>=k+1)
        {
            printf("%d ",i);
        }
    }
}
2008-12-07 16:15
zj198771xl
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-11-1
收藏
得分:0 
#include <stdio.h>
#include <math.h>
void main()
{
    int i,j,k;         //i表示2~100之间的数,sqr(i)表示取i的平方根,且k=sqr(i),

    for(i=2;i<=100;i++)        /*j作为i的除数,比如:i=23,则spr(i)=4,即k=4,
                            将i分别除以2、3、4,如果能除尽表明不是素数,
                            退出for循环,如果都不能除尽,则直到j>k结束
                            循环,然后执行if(j>=k+1),输出i,表明
    {
        k=sqrt(i);
        for(j=2;j<=k;j++)  
       {
          if(i%j==0)  //判断是否为素数
            break;   
        }
        if(j>=k+1) // 当i不能被2、3、4........sqr(i)整除时,i就是素数。
         printf("%d ",i);
        
    }
}
2008-12-07 16:20
s水
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-7
收藏
得分:0 
一梦20年 今我醒了
这个程序中的k=sqrt(i)有什么用和if(j>=k+1)又有什么用:而这一步又 for(j=2;j<=k;j++)
        {
            if(i%j==0)
            {
一个数n如果满足不能被2-sqrt(n)整除那他就是素数。但是若满足的话那j由于循环又加了1变成j=j+1,这也成了我们判断的依据,if(j>=k+1)
        {
            printf("%d ",i);
也就是说就j<k与j>k是我们的依据.
你可以编编100-200的素数试试;\练练
2008-12-07 17:20
yangyong_629
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-11-15
收藏
得分:0 
不知道啊
2008-12-07 17:23
wang5306649
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-11-27
收藏
得分:0 
这是一个素数的数学定理,你可以举个数字试一试!!
2008-12-07 17:30
Tchong
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2008-10-17
收藏
得分:0 
感谢大家的帮助
2008-12-07 17:45
快速回复:请问一下,好心人进来
数据加载中...
 
   



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

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