c语言题指教

来源:百度知道 编辑:UC知道 时间:2024/07/02 19:43:08
请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中
关于这个C语言问题我有以下几点疑问希望知道能帮忙一下
#include "stdio.h"
void fun(int m,int k,int xx[])
{
int g=0,i,j,flag=1;
for(i=m+1;i<m*m;i++){ /*这里为什么是m*m;*/
for(j=0;j<i;j++){
if(i%j!=0)
flag=1;
else{
flag=0;break;
}
}
if(flag==1&&j>=i){ /*这里的j=i是不是有错啊,上面明明写了j<i,但这里为什么又是变成j>=i了*/
if(k>=0){
xx[g++]=i;
k--;
}
else
break;
}
}
}
指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指教指

这是我把你的程序小改了下。修改后,是将大于m的k个数输出。

#include "stdio.h"

void fun(int m,int k);
main()
{
fun(5,8);
}
void fun(int m,int k)
{
int i,j,flag=1;
for(i=m+1;;i++)
{ //这里为什么是m*m; 对i的限制应该去掉
for(j=2;j<i;j++) //j!=0//补充,j应该从2开始循环。从0开始是错的。
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if(flag==1&&j>=i)
{/*这里的j=i是不是有错啊,上面明明写了j<i,但这里为什么又是变成j>=i了*///其实这里就是看j是否等于i,等于i就是素数,不会出现大于j>i的情况
if(k>0)
{
printf("%d ",i);
k--;
}
else
break;
}
}
}