一道C语言编程题,请大家帮帮忙

请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入17,则应输出:9和46891012141516#inc... 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入17,则应输出:9和4 6 8 9 10 12 14 15 16
#include <stdio.h>
void fun( int m, int *k, int xx[] )
{

}
main()
{
int m, n, zz[100];
printf( "\nPlease enter an integer number between 10 and 100: " );
scanf( "%d", &n );
fun( n, &m, zz );
printf( "\n\nThere are %d non-prime numbers less than %d:", m, n );
for( n = 0; n < m; n++ )
printf( "\n %4d", zz[n] );
}
展开
 我来答
百度网友b0e28cae4
2012-03-06 · TA获得超过4016个赞
知道大有可为答主
回答量:1276
采纳率:85%
帮助的人:599万
展开全部
#include <stdio.h>
void fun( int m, int *k, int xx[] )
{
int n,i,j;
(*k) = 0;
for(n=2;n<m;n++)
{
// 判断 n 是否是素数
for(i=2;i<n;i++)
if(n%i==0)
break;

// n 不是素数
if(i<n)
xx[(*k)++] = n;
}
}
main()
{
int m, n, zz[100];
printf( "\nPlease enter an integer number between 10 and 100: " );
scanf( "%d", &n );
fun( n, &m, zz );
printf( "\n\nThere are %d non-prime numbers less than %d:", m, n );
for( n = 0; n < m; n++ )
printf( "\n %4d", zz[n] );
}
更多追问追答
追问
int i,j;
int t=0;
for(i=2;i<m;i++)
{ j=2;
while(j<i)
{ if(i%j==0) {xx[t++]=i; break; }
j++;
}
*k=t;
}
请问您答案这样写对吗??那个break什么意思啊??和您写的是一个意思吗?
追答
为什么你们的代码括号都不对齐的啊,我看着好累啊。。。。
这个代码和我的思路是一样的

int t=0;
for(i=2;i<m;i++)
{
j=2;
// 判断 i 是否质数
while(j<i)
{
// i%j == 0 成立,i 是 j 的一个因子
// 因此 i 不是质数
if(i%j==0)
{
// i 记录到数组中
xx[t++]=i;
// 因此已经知道 i 不是素数了,跳出 while 循环
break;
}
j++;
}
// 返回非素数个数
*k=t;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式