Sum of Consecutive Prime Numbers

约定不等于承诺〃 2022-03-29 12:58 269阅读 0赞

一些正整数能够表示为一个或多个连续素数的和。给定一个正整数,有多少个这样的表示?
例如,整数53有两个表示5+7+11+13+17和53;整数20没有这样的表示。注意加法操作数必须是连续的素数。
请写一个程序,对于给出的正整数,给出连续素数的和的表示数。
输入:
输入一个正整数序列,每个数一行,在2—10000之间取值。输入结束以0表示。
输出:
输出的每一行对应输入的每一行,除了最后的0。输出的每一行,对于一个输入的正整数,给出连续素数的和的表示数。
输出中没有其他的字符。

  1. #include <iostream>
  2. using namespace std;
  3. bool isPrime(int n) //判断是否为素数
  4. {
  5. for(int i=2; i<=n/2; i++)
  6. if(n%i==0)
  7. return false;
  8. return true;
  9. }
  10. int main()
  11. {
  12. int integer;
  13. cin>>integer; //输入n个整数
  14. while(integer)
  15. {
  16. int count=0; //统计表示数
  17. for(int i=2; i<=integer; i++)
  18. {
  19. if(isPrime(i))
  20. {
  21. int sum=0;
  22. for(int j=i; j<=integer; j++) //从第一个素数开始求连续素数的加和直到值大于等于输入数
  23. {
  24. if(isPrime(j)&&sum<integer)
  25. sum+=j;
  26. }
  27. if(sum==integer) //判断所求加和是否等于输入数
  28. count++; //是则count++
  29. }
  30. }
  31. cout << count<< endl; //输出表示数
  32. cin>>integer;
  33. }
  34. return 0;
  35. }

运行结果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xZXzYyNA_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读