欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

下列程序的功能是:选出100~1000间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素

时间:2018-01-18

下列程序的功能是:选出100~1000间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt,以及这些素数值的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT17.DAT中。


注意:部分源程序已给出。


请勿改动主函数main()和写函数writeDAT()的内容。


试题程序:


include <stdio.h>


int cnt, sum;


void countValue()


{


}


main()


{


cnt=sum=0;


countValue();


print f ("素数的个数=%d\n", cnt);


printf("满足条件素数值的和=%d", sum);


writeDAT();


}


writeDAT()


{


FILE *fp;


fp=fopen("OUT17.DAT", "w");


fprintf(fp, "%d\n%d\n", cnt, sum);


fclose(fp);


}



答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。


答 案:void countValue() { int i j halfhun ten data; for (i=101; i1000;i++) { hun=i/100; /*求百位数字*/ ten=i%100/10; /*求十位数字*/ data=i%10; /*求各位数字*/ if (hun== (ten+data)%10) /*如果个位数字与十位数字之和被10除所得余数恰是百位数 字 则进一步判断该数是否为素数*/ { half=i/2; for (j=2; jhalf; j++) if (i%j==0) break; if (j >=half) {cnt++; sum+=i; } /*计算这些数的个数cnt 以及这些素数值的和sum*/ } } }
void countValue() { int i, j ,half,hun, ten, data; for (i=101; i1000;i++) { hun=i/100; /*求百位数字*/ ten=i%100/10; /*求十位数字*/ data=i%10; /*求各位数字*/ if (hun== (ten+data)%10) /*如果个位数字与十位数字之和被10除所得余数恰是百位数 字, 则进一步判断该数是否为素数*/ { half=i/2; for (j=2; jhalf; j++) if (i%j==0) break; if (j >=half) {cnt++; sum+=i; } /*计算这些数的个数cnt, 以及这些素数值的和sum*/ } } } 解析:本题的解题思路是利用一个for循环依次取得100到1000之间的数,接着求得当前所取得的数的各个位上的数字值,语句“hun=i/100;ten=i%100/10:data=i%10:”可以分别取得某数的百位、十位及个位上的数字值,然后判断该数个位数字与十位数字之和被10除所得的余数是否恰好等于百位上的数字。如果这个条件成立,接着去判断原数是否是素数,这里,考虑到效率问题,可以依次用从2到该原数本身一半的数去除原数,如果原数能被除尽,则证明该数肯定不是素数,不需要做下面的工作,接着去取下一个数,继续判断。只有同时满足上述两个条件的数才是本题所需的数,这时把该数累加到变量sum (满足条件素数值的和)中,同时也给计数器变量cnt(素数的个数)加1。
相关推荐

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。