计算机二级开根号函数,请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。  注意:要求n的...

请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。

注意:要求n的值大于2但不大于100。部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

/**********code.c**********/

#include

#include

double fun(int n)

{

}

void main()

{

int n;

double sum;

void NONO ();

printf("\n\nInput n: ");

scanf("%d",&n);

sum=fun(n);

printf("\n\nsum=%f\n\n",sum);

NONO();

}

void NONO ()

{

/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

int n,j;

FILE *rf,*wf;

rf = fopen("in.dat","r");

wf= fopen("out.dat","w");

for(j=0;j<10;j++)

{

fscanf(rf, "%d",&n);

fprintf(wf,"%f\n",fun(n));

}

fclose(rf);

fclose(wf);

}

/**********-code.c**********/

/**********indat**********/

-1

0

3

4

5

17

20

100

200

800

/**********-indat**********/

/**********outdat**********/

0.000000

0.000000

1.732051

1.732051

3.968119

17.659152

22.018051

148.874270

405.252548

2437.670620

/**********-outdat**********/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码实现: ```python def fun(n): if n < 2: return 0 for i in range(2, int(n**0.5)+1): if n % i == 0: return 0 return 1 sum_of_funs = sum([fun(n) for n in range(2, 31)]) print(sum_of_funs) ``` 其,`fun(n)`函数用于判断一个数`n`是否为素数,返回值为`1`表示是素数,返回值为`0`表示不是素数。在函数内部,首先判断`n`是否小于2,因为2是最小的素数;然后使用循环从2到$\sqrt{n}$的整数去除`n`,如果存在整除关系,则表明`n`不是素数,返回`0`;否则表明`n`是素数,返回`1`。 接着,使用列表推导式生成`[fun(n) for n in range(2, 31)]`,即生成从2到30的数对应的素数判断结果列表,最后使用`sum`函数求和即可得到`fun(2)+… +fun(30)`的结果。 ### 回答2: 编写一个函数fun(n)来判断一个数n是否为素数。在函数内部,我们可以尝试将n与2到n-1之间的数进行取余运算,如果存在任意一个取余结果等于0,则n不是素数,返回0。否则,n是素数,返回1。 ```python def fun(n): if n < 2: # 小于2的数不是素数 return 0 for i in range(2, int(n/2)+1): if n % i == 0: return 0 return 1 # 输出fun(2)到fun(30)的结果 for i in range(2, 31): print(f"fun({i})={fun(i)}") ``` 运行结果: ``` fun(2)=1 fun(3)=1 fun(4)=0 fun(5)=1 fun(6)=0 fun(7)=1 fun(8)=0 fun(9)=0 fun(10)=0 fun(11)=1 fun(12)=0 fun(13)=1 fun(14)=0 fun(15)=0 fun(16)=0 fun(17)=1 fun(18)=0 fun(19)=1 fun(20)=0 fun(21)=0 fun(22)=0 fun(23)=1 fun(24)=0 fun(25)=0 fun(26)=0 fun(27)=0 fun(28)=0 fun(29)=1 fun(30)=0 ``` 其,`fun(2)`到`fun(30)`的结果分别为1、1、0、1、0、1、0、0、0、1、0、1、0、0、0、1、0、1、0、0、0、0、1、0、0、0、0、1、0。 ### 回答3: 编写一个函数fun(n),判断n是否为素数,是素数则返回1,不是素数则返回0。以下是用Python编写函数实现: ```python def fun(n): if n <= 1: return 0 # 小于等于1的数不是素数 elif n == 2: return 1 # 2是素数 else: for i in range(2, int(n**0.5) + 1): if n % i == 0: # 若n能被2到根号n之间的数整除,则不是素数 return 0 return 1 # 否则是素数 # 使用fun函数fun(2) … fun(30) for i in range(2, 31): print(f"fun({i}) = {fun(i)}") ``` 运行以上代码,可以得到fun(2)到fun(30)的结果: ``` fun(2) = 1 fun(3) = 1 fun(4) = 0 fun(5) = 1 fun(6) = 0 fun(7) = 1 fun(8) = 0 fun(9) = 0 fun(10) = 0 fun(11) = 1 fun(12) = 0 fun(13) = 1 fun(14) = 0 fun(15) = 0 fun(16) = 0 fun(17) = 1 fun(18) = 0 fun(19) = 1 fun(20) = 0 fun(21) = 0 fun(22) = 0 fun(23) = 1 fun(24) = 0 fun(25) = 0 fun(26) = 0 fun(27) = 0 fun(28) = 0 fun(29) = 1 fun(30) = 0 ``` 根据运行结果可知,fun(2)到fun(30)的值分别为1、1、0、1、0、1、0、0、0、1、0、1、0、0、0、1、0、1、0、0、0、1、0、0、0、0、0、1、0。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值