ZxZ. 发表于 2023-7-16 16:39:58

c语习题

题目:请编写函数fun,它的功能是:判断m是否为素数
。主函数的功能是:求出100到200之间的素数的
      个数。

注意:勿改动其他内容
在/**********Program**********/


/**********End**********/之间填入若干语句


#include "stdio.h"
main()
{
         int m,k=0;
         for(m=100;m<200;m++)
            if(fun(m))
                {
                printf("%4d",m);
                k++;
                     if(k%5==0)
                  printf("\n");
                }
      printf("k=%d\n",k);
      
}

int fun(int m)
{

/**********Program**********/


/**********End**********/

}


陶远航 发表于 2023-7-16 16:40:14

以下是填空部分的完整代码:

#include <stdio.h>
#include <math.h>

int fun(int m) {
    int i;
   
    if (m <= 1) {
      return 0;
    }
   
    for (i = 2; i <= sqrt(m); i++) {
      if (m % i == 0) {
            return 0;
      }
    }
   
    return 1;
}

int main() {
    int m, k = 0;
   
    for (m = 100; m < 200; m++) {
      if (fun(m)) {
            printf("%4d", m);
            k++;
            
            if (k % 5 == 0) {
                printf("\n");
            }
      }
    }
   
    printf("k=%d\n", k);
   
    return 0;
}


在 fun 函数中,我们使用了试除法来判断一个数是否为素数。该函数会返回 1 表示是素数,返回 0 表示不是素数。

在 main 主函数中,我们遍历从 100 到 200 的整数,调用 fun 函数判断是否为素数。如果是素数,则打印出来,并统计个数。每行打印五个数,然后换行显示。

最后输出的 k 是素数的个数。

希望能够帮到你!

isdkz 发表于 2023-7-16 16:40:58

在提供的程序中,你需要在函数 fun(int m) 中填入代码以判断 m 是否为素数。素数的定义是只有两个正因数:1 和本身。这意味着,如果我们发现除了1和它本身以外的任何数字可以整除 m ,我们就可以确定 m 不是素数。我们可以通过遍历从2到根号 m 的所有数字来进行这种检查。下面是如何在 fun(int m) 中实现这个逻辑:

#include "stdio.h"
#include <math.h>

main()
{
    int m,k=0;
    for(m=100;m<200;m++)
      if(fun(m))
      {
            printf("%4d",m);
            k++;
            if(k%5==0)
                printf("\n");
      }
    printf("k=%d\n",k);
}

int fun(int m)
{
/**********Program**********/

    int i;
    for(i=2; i<=sqrt(m); i++)
    {
      if(m%i == 0)//如果m能被i整除,那么m不是素数
      {
            return 0;//返回0表示m不是素数
      }
    }

    return 1;//如果上面的循环结束后都没有找到能够整除m的数字,那么m就是素数,返回1

/**********End**********/
}


解释:在 fun(int m) 函数中,我们使用一个循环从2遍历到 m 的平方根。对于每一个数 i ,我们检查 m 能否被 i 整除,也就是说 m%i 的值是否为0。如果 m 能被 i 整除,那么 m 就不是素数,我们返回0。如果在整个循环过程中我们都没有找到能够整除 m 的数字,那么就可以确定 m 是素数,我们返回1。这就是我们判断一个数是否为素数的方法。

Jianbaiyi 发表于 2023-7-16 17:19:45

#include "stdio.h"
int fun(int m);
main()
{
    int m, k = 0;
    for (m = 100; m < 200; m++) {
      if (fun(m))
                {
            printf("%4d", m);
            k++;
            if (k % 5 == 0)
                printf("\n");
      }
    }
    printf("k=%d\n", k);
    return 0;
}
int fun(int m)
{
    int i;
    if (m < 2)// 小于2的数不是素数
      return 0;
    for (i = 2; i <= m / 2; i++) {
      if (m % i == 0)// 能够整除的数不是素数
            return 0;
    }
    return 1;// 没有能够整除的数,是素数
}

歌者文明清理员 发表于 2023-7-16 21:22:08

在/Program/和/**********  End  **********/之间填入以下代码:
cCopy Codeint fun(int m)
{
    if (m &lt;= 1) {
      return 0;// 不是素数
    }
    for (int i = 2; i * i &lt;= m; i++) {
      if (m % i == 0) {
            return 0;// 不是素数
      }
    }
    return 1;// 是素数
}

这段代码中,\fun\函数用于判断一个数是否为素数。主函数中使用循环遍历从100到199的数字,调用\fun\函数判断每个数字是否为素数,并统计素数的个数。符合条件的素数会打印出来,每行打印5个数字。最后输出素数的个数。

sty. 发表于 2023-7-23 11:14:07

#include "stdio.h"
main()
{
         int m,k=0;
         for(m=100;m<200;m++)
            if(fun(m))
                {
                printf("%4d",m);
                k++;
                     if(k%5==0)
                  printf("\n");
                }
      printf("k=%d\n",k);
      
}

int fun(int m)
{

/**********Program**********/
        int i,k=1;
    if(m<=1) k=0;
    for(i=2;i<m;i++)
    if(m%i==0)k=0;
    return k;



/**********End**********/

}

sfqxx 发表于 2023-7-23 11:48:57

@陶远航 这……?

陶远航 发表于 2023-7-23 12:07:39

sfqxx 发表于 2023-7-23 11:48
@陶远航 这……?

???强大的新鱼油

sfqxx 发表于 2023-7-23 12:32:21

陶远航 发表于 2023-7-23 12:07
???强大的新鱼油

直接复制代码
页: [1]
查看完整版本: c语习题