| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 388 人关注过本帖
标题:求助 一道题 两种解法
只看楼主 加入收藏
北北风吹
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求助 一道题 两种解法
求3到n之间所有素数的平方根之和(含3和100),n大于2,不大于100

解法一:
double fun(int n)
{
    int i,j;double sum=0;
    for(j=3;j<=n;j++)
    {
        for(i=2;i<j;i++)
            if(j%i!=0)
            
            sum+=sqrt(j);
    }
    return sum;
}



解法二:
int i;
     double sum=0;
     if(n>2&&n<100)
     {
         for(i=2;i<n;i++)
             if(n/i!=0)
                 sum+=sqrt(n);
             n++;
     }return sum;

两种解法都有错误,求助找出错误!
搜索更多相关主题的帖子: double 平方根 
2012-03-20 22:38
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:4 
第一种:第二个循环的作用应该是判断是否为素数,确定是素数才sum+=……第二种:
第二种:一样的

酱油实习生
2012-03-21 10:46
星辰雁
Rank: 4
等 级:业余侠客
威 望:1
帖 子:93
专家分:275
注 册:2011-9-10
收藏
得分:4 
for(j=3;j<=n;j++)    {   
    for(i=2;i<j;i++){
       if(j%i!=0)     
       sum+=sqrt(j);
} }//这是第一个错误,再加个大括号

不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做 ,因为CPU是为用户服务的,不是为我们程序员服务的!
2012-03-21 11:50
星辰雁
Rank: 4
等 级:业余侠客
威 望:1
帖 子:93
专家分:275
注 册:2011-9-10
收藏
得分:0 
同样的错误,
if(n>2&&n<100)     {      
   for(i=2;i<n;i++)   {
          if(n/i!=0)         
       sum+=sqrt(n);      
       n++;}

不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做 ,因为CPU是为用户服务的,不是为我们程序员服务的!
2012-03-21 11:52
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:4 
错误1、我觉得第一个、第二个有一个共同的错误。就是对于一个整数n,当n能被多个数整除时n会被加多次。如n=6时。循环执行到i=2,3时都能被整除。这样n就被加了两次。可以用一个break语句退出内层循环。
for(i=2;i<j;i++)


if(j%i!=0)


{sum+=sqrt(j);break;}
错误2、第二个if(n/i!=0)错误,应该是if(n%i!=0)

[ 本帖最后由 不哭5死神 于 2012-3-21 13:14 编辑 ]
收到的鲜花
  • 北北风吹2012-03-21 21:53 送鲜花  1朵   附言:这确实是是一个问题,但最终没有解决问题。
2012-03-21 12:59
c_cup
Rank: 2
等 级:论坛游民
帖 子:20
专家分:71
注 册:2012-3-21
收藏
得分:4 
素数的判断方法貌似有问题把.
for(i=2;i<j;i++)
   if(j%i!=0)     //4%3 == 1,4明显不是素数
       sum+=sqrt(j);
笨办法:设一素数标志Flag,Flag为1是为素数.
for(j = 3; j <= n; j++)
{
 for(i = 2; i < j; i++)
  {
     if(j%i == 0)
        {
            Flag = 0; break;
        }
  }
     if(Flag !=0)
        sum += sqrt(j);
     else
        Flag = 1;
 }

成功就像怀孕,大家都来恭喜你,但是没人知道你被操了多少次.
2012-03-21 14:43
快速回复:求助 一道题 两种解法
数据加载中...
 
   



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

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