| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1659 人关注过本帖
标题:新手问个问题:100-200的全部素数
只看楼主 加入收藏
順哥哥orz
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-4-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
新手问个问题:100-200的全部素数
#include "stdio.h"  
void main()
{
    int i , n ;
    for(n=101 ;n< 200;n+=2)
    {
        for(i=2;i<=n-1;i++)  这里的i初始化为什么是2,不是100啊?
           if(n%i==0)
               break;
        if(i== n )
           printf("%5d",n);
    }
}

高手帮解答下吧,谢谢
搜索更多相关主题的帖子: 素数 
2010-04-21 09:57
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:2 
以下是引用順哥哥orz在2010-4-21 09:57:11的发言:

#include "stdio.h"  
void main()
{
    int i , n ;
    for(n=101 ;n< 200;n+=2)
    {
        for(i=2;i<=n-1;i++)  这里的i初始化为什么是2,不是100啊?
           if(n%i==0)
               break;
        if(i== n )
           printf("%5d",n);
    }
}

高手帮解答下吧,谢谢
这是数学问题啊,很容易想明白的,随便假设一个数字,105,不是素数吧,你如果i从100开始,那你得出的结论是什么?只能被105整除,那么成素数了?
2010-04-21 10:06
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:3 
还是要根据素数的定义来想的,仅被1以及自身能够整除的数,那么i值可以从2开始起算,但是i是否一定要小于n-1呢?显然也不用,其实n/2,(假设101不能被2到51以内的数整除,那么51以上也没必要再去跑循环整除)或者n开根号都可以作为上限值。
2010-04-21 10:10
曦月
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2010-4-7
收藏
得分:3 
要先对2开始取余一直到n/2,如果都不能整除就表示它是素数了
2010-04-21 10:33
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:3 
#include<stdio.h>
main()
{int i,j=0,n;
  for(n=100;n<=200;n++)
   {for(i=2;i<=(int)sqrt(n);i++)
       {  if(n%i==0)  {j=1;break;}
        }
   if(j==0)printf("%d\t",n);
   j=0;
  }
}

新手玩玩的
2010-04-21 12:00
xueyuhanhai
Rank: 4
等 级:业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
收藏
得分:3 
#include "stdio.h"  
void main()
{
    int i , n ;
    for(n=101 ;n< 200;n+=2)//n是素数的范围
    {
        for(i=2;i<=n-1;i++) //i是判断素数的变量,只要能够被2到n-1之内的数整除即说明它不是素数吧,其实也可以是2到n/2或到n的开根号也可以的。
           if(n%i==0)
               break;
        if(i== n )//如果除了本身和1外没有数可以整除它,即是素数。

           printf("%5d",n);
    }
}
2010-04-21 13:58
lddwh
Rank: 2
等 级:论坛游民
帖 子:34
专家分:79
注 册:2010-4-7
收藏
得分:3 
#include <stdio.h>
#include <math.h>

bool IsPrime(int x);   //判断是否为素数

void main()
{
    int x;
    printf("请输入一个正整数\n");
    scanf("%d",&x);
    if(x<=1)
    {
        printf("ERROR");
        return;
    }
    printf("这个数%s素数\n",IsPrime(x)?"是":"不是");
}

bool IsPrime(int x)
{
    int i;
    for(i=2;i<=sqrt(x);i++)
        if(x%i==0)
            return false;
    return true;
}
2010-04-21 22:26
zjhwade
Rank: 1
等 级:新手上路
帖 子:14
专家分:7
注 册:2010-4-21
收藏
得分:3 
这得从素数的定义开始:
素数指的是只能被1和它本身整除的数。
那么i的初值是2就很顺利陈章啦!一个数肯定能被1整除喽,所以从2开始循环,直到n!要是期间有被整除的就不是素数了……

我也新手,交流交流
2010-04-23 12:28
快速回复:新手问个问题:100-200的全部素数
数据加载中...
 
   



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

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