当前位置:   article > 正文

【c语言】求 1000 以内全体素数之和(适合初学者)_1314 :素数求和 【c/c++/java/python】(基础程序设计,for循环,函数)

1314 :素数求和 【c/c++/java/python】(基础程序设计,for循环,函数)
  1. #include<stdio.h>
  2. int main(){
  3. int a,b,c,i,sum;
  4. c=0;
  5. a=1;
  6. sum=0;
  7. while(a<=1000){
  8. for (i = 1; i <= a; ++i)
  9. {
  10. b=a%i;
  11. if(b==0){
  12. c++;
  13. }
  14. }
  15. if(c<=2){
  16. sum=sum+a;
  17. }
  18. a++;
  19. }
  20. printf("%d\n",sum);
  21. return 0;
  22. }

用c语言求1000以内全体素数之和有以下方式或思路:

  1. 遍历1到1000之间的所有整数,对于每一个整数,判断它是否是素数,如果是素数,就累加到素数之和中。
  2. 用埃氏筛法(Sieve of Eratosthenes)求1000以内的所有素数,然后将素数之和累加即可。埃氏筛法的思路是:从2开始,将2的倍数全部标记为合数,然后再从下一个未标记的数开始,重复这个过程,直到遍历完所有小于等于给定数的数。标记完成后,未被标记的所有数均为素数。

方式一:

  1. #include <stdio.h>
  2. int is_prime(int n) {
  3. if (n < 2) { // 0和1都不是素数
  4. return 0;
  5. }
  6. for (int i = 2; i < n; i++) {
  7. if (n % i == 0) {
  8. return 0;
  9. }
  10. }
  11. return 1;
  12. }
  13. int main() {
  14. int sum = 0;
  15. for (int i = 1; i <= 1000; i++) {
  16. if (is_prime(i)) {
  17. sum += i;
  18. }
  19. }
  20. printf("1000以内全体素数之和为:%d\n", sum);
  21. return 0;
  22. }

方式二:

  1. #include <stdio.h>
  2. int main() {
  3. int sum = 0;
  4. int is_prime[1001]; // 用数组记录每个数是否是素数,1表示是素数,0表示不是
  5. for (int i = 0; i <= 1000; i++) {
  6. is_prime[i] = 1;
  7. }
  8. is_prime[0] = is_prime[1] = 0; // 0和1都不是素数
  9. for (int i = 2; i <= 1000; i++) {
  10. if (is_prime[i]) { // 如果i是素数,将i的倍数全部标记为合数
  11. for (int j = i * i; j <= 1000; j += i) {
  12. is_prime[j] = 0;
  13. }
  14. }
  15. }
  16. for (int i = 1; i <= 1000; i++) {
  17. if (is_prime[i]) {
  18. sum += i;
  19. }
  20. }
  21. printf("1000以内全体素数之和为:%d\n", sum);
  22. return 0;
  23. }

使用这两种方式计算1000以内的素数时需要注意以下几点:

  1. 对于方式一,要注意在遍历每个数时,可以只遍历到其平方根,这样可以减少不必要的计算。

  2. 对于方式一,需要使用布尔类型的数组来标记是否为素数,初始时将所有元素都设置为true。如果使用int类型的数组,则要注意赋初值为1。

  3. 对于方式一,要注意一些边界条件的处理,比如0和1不是素数,遍历时要从2开始。

  4. 对于方式二,要注意一些边界条件的处理,比如0和1不是素数,遍历时要从2开始,而且每次只需要遍历到该数的一半即可。

  5. 对于方式二,要注意优化,比如可以判断该数是否为偶数,如果是偶数则直接跳过,因为2是唯一的偶素数,其他偶数都不是素数。

  6. 对于方式二,需要使用一个变量来记录素数的和,每找到一个素数就将其加入该变量中。

  7. 在写代码时,可以将判断是否为素数的部分单独封装成一个函数,方便调用和重复使用。

  8. 对于c语言刚入门的人,建议从简单的程序开始,例如从输出一到十的数字开始,逐渐增加难度,不要急于求成,要慢慢来,理解每个程序的基本逻辑和语法,不断地练习和总结,才能更好地掌握c语言编程。

作为一个C语言初学者,想要快速提高自己的代码水平,可以尝试以下几个方法:

  1. 多做练习题:可以从一些在线编程网站或者书籍中找到一些练习题,多写多练,熟悉常见的算法和数据结构,掌握常见的编程思路和技巧。

  2. 看优秀的代码:阅读优秀的开源代码或者一些著名的程序库的源代码,可以借鉴其中的设计思路和实现方法,从中学习到好的编程风格和规范。

  3. 纠正错误和不良习惯:在写代码过程中会出现很多错误和不良习惯,如语法错误、逻辑错误、不合理的变量命名等等。应该及时发现和纠正这些错误和习惯,提高代码的可读性和可维护性。

  4. 多思考多总结:在写代码时不要只关注代码的实现,还要思考问题背后的原理和思路,总结自己的经验和教训,形成自己的思考方式和编程风格。

  5. 多参与社区和讨论:可以加入一些编程社区和论坛,参与讨论和交流,向别人请教问题和分享自己的经验,这样可以快速学习和进步。

总之,提高编程水平需要不断地练习和学习,掌握好的编程思路和技巧,形成自己的编程风格和规范。同时,也要注重实践和总结,多参与社区和讨论,不断挑战和提高自己的能力。

 

以下是一些适合c语言初学者看的书籍:

  1. 《C Primer Plus》(中文名:《C Primer Plus》),Stephen Prata 著,这是一本非常适合初学者的书,通俗易懂,循序渐进,适合初学者自学。

  2. 《C语言程序设计》(第四版),谭浩强 著,这是一本经典的c语言教材,通俗易懂,且覆盖了c语言的各个方面。

  3. 《C语言入门经典》(第五版),Greg Perry 和 Dean Miller 著,这是一本易于入门的书,很好地介绍了c语言的基本概念和语法,配有丰富的实例和练习。

  4. 《C语言程序设计教程》(第二版),曹力 著,这是一本较为深入的c语言教程,介绍了一些高级的概念和技术,适合有一定编程基础的初学者。

  5. 《C程序设计语言》(第二版),Brian W. Kernighan 和 Dennis M. Ritchie 著,这是一本经典的c语言教材,介绍了c语言的基本概念和语法,适合有一定编程基础的初学者。

当然,这些书只是其中的一部分,选择一本适合自己的书籍来学习,一定要多动手实践,不断练习,加深对c语言的理解。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/329042
推荐阅读
相关标签
  

闽ICP备14008679号