| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4073 人关注过本帖
标题:[求助]求100到500间的所有素数。
只看楼主 加入收藏
blanka_ren
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2005-4-5
收藏
 问题点数:0 回复次数:8 
[求助]求100到500间的所有素数。
求100到500间的所有素数:

#include <stdio.h>
main()
{
 int m,k,i,n=0;
  printf("\n");
  for(m=101;m<500;m+=10)
  {
   for(i=2;i<=m/2;i++)
     if(m%i==0) break;
   if(i>=m/2+1)
    {
     printf("%d ",m);
     n++;
     if(n%10==0) printf("\n");
    }
  }
 return 0;
}

请问下

for(i=2;i<=m/2;i++)
     if(m%i==0) break;
   if(i>=m/2+1)
    {
     printf("%d ",m);
     n++;
     if(n%10==0) printf("\n");
    }
是什么意思啊?那个FOR循环好象没有什么用的样子?
它起什么作用?还有下面的IF语句有什么作用?麻烦那位来给讲解下,多谢谢了先。
搜索更多相关主题的帖子: 素数 
2005-04-13 18:56
poppylx
Rank: 1
等 级:新手上路
帖 子:367
专家分:0
注 册:2004-9-27
收藏
得分:0 
for循环怎么会没有用呢    i 从2 循环到 m/2     在此过程中  如果 m整除 i    m不为素数      直接跳出循环
只有在不跳出循环的情况下  i才可能大于等于m/2+1    (我想这里用m/2会不会好点呢)
所以被打印出来的数就会是一个素数

动于心而静如水
2005-04-13 19:36
zhualike
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-4-5
收藏
得分:0 
我想问下~这里的:
  if(i>=m/2+1)
是什么意思啊?
理解不了~
为什么是“>”呢?

2005-04-13 20:21
blanka_ren
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2005-4-5
收藏
得分:0 
感谢2楼,终于得以明白,哎~我太笨了

2005-04-13 20:43
guojiaokok
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-4-13
收藏
得分:0 
3楼的问题我回答啦



那个IF是用来输出是换行用的  没有别的意思
2005-04-13 22:28
ljzh_77
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-3-23
收藏
得分:0 
第一个 if (i>=m/2+1) 起修正作用, 因为如果这个数是奇数的话,m/2会比它的一半小.
第二个 if 用来换行,即满10个数换行.

2005-04-13 22:52
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
因为判断素数可以只判断到他的一半.就可以知道他是不是素数了。如100.最多是当你判断到50就知道了。因为判断到51的时候已经无意义了。(100/51=1).....其实他的素数求法不太好。最好是来个漏选法或者只判断到他 sqrt(m) 就已经可以了。你可以去看看c论坛里有篇经典文章。名字是    <<程序设计方法及编写优质无错C程序秘诀 >>  这篇文章里有写求素数的算法.而且作业写的非常好。我吐血推荐~~~~~~~~~~~

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-14 08:00
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
得分:0 
素数“漏筛法” #include<stdio.h> #define max 22500 main() { unsigned int i,range ,factor ,k; int a[max]; printf("please input the range:\n");/*指出多大范围内寻找素数*/ scanf("%d",&range); for(i=2;i<=range;i++) /*初始化*/ a[i]=1; factor=2; while(factor<=range) { if(a[factor]<=range) { printf("%d\t",factor); k=factor; while(k<=range) { a[k]=-1; k=k+factor; } } factor++; } } 坚强依然!永不言苦!永不言败!睇透数据结构!编程编程再编程!-----激情依旧

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-14 08:06
zhtmark
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2005-3-25
收藏
得分:0 
#include"stdio.h"
#include"math.h"
main()
{
int k,j,i,n=0,nq,ne;
printf("请输入启始值:");
scanf("%d",&amp;nq);
printf("\n请输入终止值:");
scanf("%d",&amp;ne);
  for(i=nq;i&lt;=ne;i++)
  {  k=sqrt(i);
     for(j=2;j&lt;=k;j++)
   if(i%j==0)break;
   if(j&gt;=k+1) {printf("%7d",i); n=n+1;
   if(n%10==0) printf("\n");}
  
  }
  printf("\n");
}

zhtmark QQ:451361060
2005-04-15 12:20
快速回复:[求助]求100到500间的所有素数。
数据加载中...
 
   



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

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