| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 857 人关注过本帖, 1 人收藏
标题:求大神简单的讲解
只看楼主 加入收藏
q591166
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2011-5-8
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:13 
求大神简单的讲解
求100至200间的全部素数。
#include<math.h>
main()
{
int m,i,k,n=0;
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+1)
{printf(“%d”,m);
   n=n+1;}
      if(n%n==0)printf(“\n”);
}
printf(“\n”);
}
结果得`
图片附件: 游客没有浏览图片的权限,请 登录注册

但我把i 和m换一下``得的结果不一样呢``?~
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

2012-06-13 21:06
q591166
Rank: 1
等 级:新手上路
帖 子:23
专家分:5
注 册:2011-5-8
收藏
得分:0 
自学真难``都没人来讲解一下么``自己顶一个`
2012-06-13 21:26
qq383264679
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:155
专家分:130
注 册:2012-1-19
收藏
得分:3 
看着你写的程序 就觉得恶心
#include <math.h>
main()
{
    int m, i, n=0, lag, k;
   
    for(m = 101; m <= 200; m=m+1)    //为什么是m+=2 呢?
      {
          lag = 1;
        k=sqrt(m);
        for(i = 2;i <= k; i++)
             if(m%i==0)
                 {
                     lag = 0;
                    break;
                 }
                 
         
        if(lag)
            {
               
               printf("%d ",m);      //后面的不知道你要干什么,我改一下你自己看看
            }
      }
}
为了美观,我优化一下
#include <math.h>
main()
{
    int m, i, n=0, lag, k, l = 0;
   
    for(m = 101; m <= 200; m=m+1)    //为什么是m+=2 呢?
      {
          lag = 1;
        k=sqrt(m);
        for(i = 2;i <= k; i++)
             if(m%i==0)
                 {
                     lag = 0;
                    break;
                 }
                 
         
        if(lag)
            {
               l++;  
               printf("%d ",m);
               if(l == 5)
                  {
                    printf("\n");
                    l = 0;
                  }      
            }
      }
}
收到的鲜花
  • q5911662012-06-13 23:50 送鲜花  3朵   附言:刚看几天`不识大体`
2012-06-13 23:44
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
收藏
得分:3 
看着你写的程序 就觉得恶心
#include <math.h>
main()
{
    int m, i, n=0, lag, k;
   
    for(m = 101; m <= 200; m=m+1)    //为什么是m+=2 呢?
      {
          lag = 1;
        k=sqrt(m);
        for(i = 2;i <= k; i++)
             if(m%i==0)
                 {
                     lag = 0;
                    break;
                 }
                 
         
        if(lag)
            {
               
               printf("%d ",m);      //后面的不知道你要干什么,我改一下你自己看看
            }
      }
}
为了美观,我优化一下
#include <math.h>
main()
{
    int m, i, n=0, lag, k, l = 0;
   
    for(m = 101; m <= 200; m=m+1)    //为什么是m+=2 呢?
      {
          lag = 1;
        k=sqrt(m);
        for(i = 2;i <= k; i++)
             if(m%i==0)
                 {
                     lag = 0;
                    break;
                 }
                 
         
        if(lag)
            {
               l++;  
               printf("%d ",m);
               if(l == 5)
                  {
                    printf("\n");
                    l = 0;
                  }      
            }
      }
其实还有一点,因为使用了printf()函数,所以开头加头文件#include<stdio.h>,希望对你有帮助!
2012-06-15 09:21
想念遇见
Rank: 2
等 级:论坛游民
帖 子:87
专家分:74
注 册:2012-5-10
收藏
得分:3 
因为偶数一定不是素数。这个算法不错
2012-06-15 10:25
xinxinjunhua
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2012-6-15
收藏
得分:3 
受益匪浅
2012-06-15 11:29
nightwar
Rank: 2
等 级:论坛游民
帖 子:32
专家分:13
注 册:2012-3-25
收藏
得分:3 
#include "stdio.h"
#include "math.h"
main()
{
    int m,i,k,flag,n=0;           //n 表示素数的总和
    for(m=101;m<201;m+=2)      //外循环   m代表要判断的“数”是不是素数
    {   k=sqrt(m);
        flag=1;               //标志着这个数是素数 (假设的)
        for(i=2;i<=k;i++)
        {
            if(m%i==0)
            {
                flag=0;
                break;
            }
        }
        if(flag)         //意义,明白了的话就明白了if函数的本质吧
        {
            n++;
            printf("%4d",m);
            if(n%5==0) printf("\n");   //目的:输出的数十美观的  五个一行
        }
        
    }
}
收到的鲜花
  • q5911662012-06-15 21:22 送鲜花  3朵   附言:谢谢``我还是不懂算法这类``
2012-06-15 19:25
邱威
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:136
专家分:351
注 册:2012-3-28
收藏
得分:3 
注意偶数不可能为素数,有没有约束,要看它能不能被它的平方根小的数整除,其他的思想应该不要再解释了吧
2012-06-15 23:25
qq383264679
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:155
专家分:130
注 册:2012-1-19
收藏
得分:0 
回复 4楼 never_yzq
一般的编译器都包含了printf() 函数
2012-06-16 09:43
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
收藏
得分:3 
以下是引用qq383264679在2012-6-13 23:44:33的发言:

看着你写的程序 就觉得恶心
#include
main()
{
    int m, i, n=0, lag, k;
   
    for(m = 101; m <= 200; m=m+1)    //为什么是m+=2 呢?
        
兄弟 偶数(除了2)能是素数吗 其实这个问题很简单啊
#include"stdio.h"
#include"math.h"
main()
{   
    int i,n,k,m;
    for(m=101;m<200;m+=2){
        k=sqrt(m);
        for(i=2;i<=k;i++){
            if(m%i==0)break;
            else {
                   printf("%4d",m);
                   n+=1;
                   if(n%5==0)printf("\n");
                   break;}      
                    }
    }
}

喜欢睡觉 却经常熬夜
2012-06-16 10:55
快速回复:求大神简单的讲解
数据加载中...
 
   



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

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