标题:求100到200间的素数
只看楼主
han8716
Rank: 1
等 级:新手上路
帖 子:76
专家分:3
注 册:2012-2-12
结帖率:90%
已结贴  问题点数:18 回复次数:12 
求100到200间的素数
#include<stdio.h>
#include<math.h>
main()
{
    int m,i,n=0,k;
    for(m=101;m<200;m=m+2)
    {
        k=sqrt(m);
        for(i=2;i<=k;i++)
            if (m%i==0)
            break;
            if(i>k)
            {
            printf("%d  ",m);
        n++;
            if(n%10==0)
        printf("\n");
            }
    }
    printf("个数:%d\n",n);
} break后面为什么是  if(i>k)
想一小时了 想不明白啊
搜索更多相关主题的帖子: 100 200 include 
2012-03-28 15:37
han8716
Rank: 1
等 级:新手上路
帖 子:76
专家分:3
注 册:2012-2-12
得分:0 
那i<k且m%i==0这个循环里 不为0的数呢 不输出吗 其实我对于为什么求一个素数 可以直接开平方根不懂 素数不就是这个数除以他之前的数 除了1 如果取余都不为零 那就是素数 加了个根号 我不明白了
2012-03-28 15:41
han8716
Rank: 1
等 级:新手上路
帖 子:76
专家分:3
注 册:2012-2-12
得分:0 
我现在知道为什么去平方根了 还是对那个break后面的  if(i>k)不明白 为什么呢  求好人回答我
2012-03-28 15:53
han8716
Rank: 1
等 级:新手上路
帖 子:76
专家分:3
注 册:2012-2-12
得分:0 
我自己想明白了 哼
2012-03-28 15:56
han8716
Rank: 1
等 级:新手上路
帖 子:76
专家分:3
注 册:2012-2-12
得分:0 
我怎么这笨 不过现在想明白了
2012-03-28 15:56
han8716
Rank: 1
等 级:新手上路
帖 子:76
专家分:3
注 册:2012-2-12
得分:0 
程序是一步一步执行的 如果在i<=k之前  m%i都不等于0的话  所以不执行break i就加一 再往下执行的时候 i就大于了k 所以也就是说i<=k之前都没有被整除  所以是素数了 函数是一步一步执行的 切忌 一步一步想 我自己来回答 是这样的吗  
2012-03-28 16:00
稻香
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2011-10-6
得分:18 
i大于k就是素数了,一边画一边看程序,就能明白
2012-03-28 16:14
liushuangq
Rank: 1
等 级:新手上路
帖 子:17
专家分:7
注 册:2012-3-18
得分:0 
你们学多久了,我看到有的语法不是很懂。
2012-03-28 18:32
早起的菜鸟
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-28
得分:0 
假设a是任一大于1的整数,则a的除1外最小正因子q是一质数,并且当a是合数时,q小于等于开平方a。从而减少判断次数。
2012-03-28 22:32
z455259721
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-28
得分:0 
顶下  我是刚刚开始接触c语言   求点学习的方法
2012-03-29 18:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-364580-1-1.html




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

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