| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11787 人关注过本帖
标题:请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整 ...
只看楼主 加入收藏
a7411580828
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19、23、29、31、37。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
**********************************************************************************************************************/
求m后面k个素数,可是我的会出现27,请问是什么原因呢?
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void fun(int m,int k,int xx[])
{
        int x,y=0,z=0;
    while(k)
    {
        m++;
    for(x=2;x<m;x++)
    {
        if(m%x==0)
        {
            m++;
        }
     }

     xx[y]=m;
     y++;
     k--;
    }
  

}
void main()
{
  FILE *wf;
  int m,n,zz[1000];
  system("CLS");
  printf("\nPlease enter two integers: ");
  scanf("%d%d",&m,&n);
  fun(m, n, zz);
  for(m=0;m<n;m++)
     printf("%d ",zz[m]);
  printf("\n ");
/******************************/
  wf=fopen("out.dat","w");
  fun(17,5,zz);
  for(m=0;m<5;m++)
     fprintf(wf,"%d ",zz[m]);
  fclose(wf);
/*****************************/
}

搜索更多相关主题的帖子: 源程序 
2016-08-23 17:44
jzhur0726
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:30
注 册:2016-8-2
收藏
得分:5 
      int x,y=k;
    while(k)
    {
      m++;
    for(x=2;x<m;x++)
    {
      if(m%x==0)
      {
        break;
      }
     }
    if(x==m)
        xx[y-k]=m;
     k--;
    }
  //试试看
2016-08-23 18:02
a7411580828
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-29
收藏
得分:0 
回复 2楼 jzhur0726
不行,而且,我主要是想知道我的那种思路是哪里出错了,正确的程序我知道~.~,感谢你的回答++
2016-08-23 18:04
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:15 
回复 楼主 a7411580828
if(m%x==0)
         {
             m++;
             x=2;    //这里加个x=2;
         }
      }
2016-08-23 18:18
a7411580828
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-7-29
收藏
得分:0 
回复 4楼 ehszt
谢谢,终于找到问题所在了~.~
2016-08-23 18:25
jzhur0726
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:30
注 册:2016-8-2
收藏
得分:0 
按你的思路,这段程序运行时是这样的:
1:k=5,y=0,m=18,x=2,m%x==0,m++,x++,m=19,x=3,m%x!=0,x++,一直到x=19,退出for循环,xx[y]=m=19,y++,k--;
2:k=4,y=1,m=20,x=2,m%x==0,m++,x++,m=21,x=3,m%x==0,m++,x++,m=22,x=4,m%x!=0,x++一直到x=11,m%x==0,m++,x++,m=23,x=12,m%x!=0,到x=m,退出for循环,xx[y]=m=23,y++,k--;
3:k=3,y=2,m=24,x=2,m%x==0,m++,x++,m=25,x=3,m%x!=0,x++,一直到x=5,m%x==0,m++,x++,m=26,x=6,m%x!=0,到x=13,m%x==0,m++,x++,m=27,x=14,m%x!=0,到x=27,退出for循环,xx[y]=m=27,y++,k--;
4:k=2,y=3,m=28,x=2,m%x==0,m++,x++,m=29,x=3,m%x!=0,x++,一直到x=29,退出for循环,xx[y]=m=29,y++,k--;
5:k=1,y=4,m=30,x=2,m%x==0,m++,x++,m=31,x=3,m%x!=0,x++,一直到x=31,退出for循环,xx[y]=m=31,y++,k--;
6:k=0,退出while(k)循环。
到现在看出问题了吗?
2016-08-23 19:25
jzhur0726
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:30
注 册:2016-8-2
收藏
得分:0 
果然还是交流才有进步,今天又学了一种方法
2016-08-23 19:29
jzhur0726
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:30
注 册:2016-8-2
收藏
得分:0 
回复 4楼 ehszt
是x=1吧?出了if()会自增的!
2016-08-23 19:33
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
以下是引用jzhur0726在2016-8-23 19:33:47的发言:

是x=1吧?出了if()会自增的!

对,疏忽了
2016-08-23 19:46
快速回复:请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大 ...
数据加载中...
 
   



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

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