| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4249 人关注过本帖
标题:题目为:使用自定义函数sushu(),输出10~100之间的所有素数。帮忙看一下错在 ...
只看楼主 加入收藏
枯叶蝴蝶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:133
注 册:2011-6-17
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
题目为:使用自定义函数sushu(),输出10~100之间的所有素数。帮忙看一下错在哪里?
程序代码:
 #include<stdio.h>
#include<math.h>
void main()
{
  int m,k,i,n=0;
  int sushu(int m);
  for(m=11;m<=100;m=m+2)
  {sushu(m);
  printf("%d  ",m);
  n++;
  if(n%10==0)printf("\n");
  }
  getch();

}


  int sushu(int m)
  { int k,n,i;
    k=(int)sqrt(m);
    for(i=2;i<=k;i++)
      if(m%i==0)break;
    if(i>=k)
      return(m);

   }
结果输出的是奇数,请问一下怎么改?
搜索更多相关主题的帖子: 函数 
2011-06-20 21:12
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:1 
你要在调用了sushu函数以后判断一下它的返回值  确定是素数后才给予输出
2011-06-20 21:47
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
收藏
得分:1 
#include<stdio.h>
#include<math.h>
int main()
{
  int m,k,i,n=0;
  int sushu(int m);
  for(m=11;m<=100;m=m+2)
  {sushu(m);
  n++;
  if(n%10==0)printf("\n");
  }
  return 0;

}


  void sushu(int m)
  { int k,n,i;
    k=(int)sqrt(m);
    for(i=2;i<=k;i++)
      if(m%i==0)break;
    if(i>k)
      printf("%d ",m);

   }
2011-06-20 21:56
枯叶蝴蝶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:133
注 册:2011-6-17
收藏
得分:0 
回复 2楼 xu362726904
怎么判断?
2011-06-20 22:34
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
程序代码:
#include <stdio.h>
#include <math.h>

char is_prime_p(int n) {
    int i, sqrtn = (int) sqrt(n);
    for (i = 3; i <= sqrtn && n % i; i += 2);
    return i > sqrtn;
}
        
int main() {
    int i;
    for (i = 11; i < 100; i += 2) {
        if (is_prime_p(i)) {
            printf("%-4d", i);
        }
    }
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-21 15:42 编辑 ]
2011-06-21 01:30
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
得分:1 
回复 3楼 Toomj
#include<stdio.h>
#include<math.h>
void main()
{
  int m,k,i,n=0;
  int sushu(int m);
  for(m=11;m<=100;m=m+2)
  {i=sushu(m);  //我把返回的宿舍赋给另一个变量,之后输出
  printf("%d  ",i);

  n++;
  if(n%10==0)printf("\n");
  }
  getch();

}
麻烦您指导一下,这个和你那个直接在子函数里输出是不是一样的啊?为什么结果不对

  int sushu(int m)
  { int k,n,i;
    k=(int)sqrt(m);
    for(i=2;i<=k;i++)
      if(m%i==0)break;
    if(i>=k)
    return m;//我这里返回的是素数,没错吧
   }
2011-06-21 10:23
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
收藏
得分:0 
int sushu(int m)
  { int k,n,i;
    k=(int)sqrt(m);
    for(i=2;i<=k;i++)
      if(m%i==0)break;
    if(i>=k)  //改为i>k
    return m;//我这里返回的是素数,没错吧(你这里不管如何都会返回一个数,所以当m不是素数时就会重复上一个,所以输出有重)
   }

可以像我那样直接输出,如果要返回值的话,就像5楼那样(返回int或char都行)
2011-06-21 11:11
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
int sushu(int a)
{int i;
for(i=2;i<a;i++)
if(a%i==0)
{return 0;break;}
return 1;}
main()
{int i;
for(i=10;i<=100;i++)
if(sushu(i))
printf("%5d",i);
getch();}
2011-06-21 11:35
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:1 
int primer(int x);

—>〉Sun〈<—
2011-06-21 15:36
快速回复:题目为:使用自定义函数sushu(),输出10~100之间的所有素数。帮忙看一 ...
数据加载中...
 
   



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

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