首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遵循规则的数字序列

遵循规则的数字序列
EN

Code Review用户
提问于 2017-05-26 21:21:26
回答 1查看 69关注 0票数 1

我有一个数字序列:1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0, 7, 7, 4,...,我必须猜测序列遵循的规则,并:

  • 计算小于n的所有素数之和
  • 在序列的元素中查找数字k出现的次数
  • 序列中p位置上的数字。输入:
  • nkp --我已经编写了下一段代码:它达到了它的目的,但我想让您给我一些关于代码风格和性能的提示(而且我考虑的是速度)。# #包括 int素数( int n) { if(n < 2)返回0;if(n == 2)返回1;if(n %2 == 0)返回0;int i;for(i = 3;i <= sqrt(n);i += 2) { if(n %i == 0)返回0;}== 1;} int main() { int n;int p;int k;scanf( %d,&n );scanf( %d,&k );scanf( %d,&p );int primeSumPerSubSequence = 128;int nAux = n;int primeSum = 0;int subSequences = 0;if( n> 60 ) subSequences =n/ 60;if( n> 60 ){ nAux =n% 60;primeSum = primeSum + primeSumPerSubSequence * subSequences;} int i= 2;int firstNumber = 1;int secondNumber = 2;if( !nAux ) secondNumber = 0;int thirdNumber = 3;int kFound = 0;switch( K){ case 0: kFound =4*子序列;断开;case 1: kFound =8*子序列;例4: kFound =4*子序列;中断;例5: kFound =8*子序列;中断;例6: kFound =4*子序列;中断;案例7: kFound =8*子序列;中断;案例8: kFound =4*子序列;中断;案例9: kFound =8*子序列;中断;}if( kFound == 1)_x( kFound == 2) kFound++;int pNumber = -1;若( !p ) pNumber = 0;若(p% 60 == 0) pNumber = 1;若(p> 60 )p %= 60;而(i <= nAux ){ if( nAux &素数( secondNumber )){ primeSum += secondNumber;} if(( i == p) && ( pNumber =1) pNumber = secondNumber;firstNumber = secondNumber;secondNumber = thirdNumber;thirdNumber = firstNumber + secondNumber;if( thirdNumber >9) thirdNumber %= 10;if( secondNumber == k&(i9) thirdNumber %= 10;if( i == p) pNumber = secondNumber;} if( pNumber == -1) pNumber = 0;printf( "\n%d",kFound );printf(“n%d”,pNumber );返回0;}

我应该编辑这个问题并添加我对算法的想法吗?谢谢,请原谅我英语不好。

EN

回答 1

Code Review用户

回答已采纳

发布于 2017-05-26 23:50:58

这是一种罕见的情况,在这种情况下,评论是绝对必要的,类似于

代码语言:javascript
复制
/* The sequence is Fibonacci numbers modulo 10. It is periodic with a
   period of 60. Each even digits appears for 4 times, and each odd
   digit for 8 times, per period. The sum of primes per period is 128.

           Reviewer's note: are you sure? Looks like you consider 1 as prime.

   To get the desired results, compute the number of entire periods,
   and process the last incomplete part separately. */
  • subSequences重命名为periods
  • switch折叠为kFound =(k& 0x01)?8: 4) *周期;
  • 我不认为kFound是1或2,因此,如果(( kFound == 1)x( kFound == 2 )) kFound++;似乎没有用。如果我错了,请纠正我。
  • 与不完整部分一起工作应分为功能部分。预先计算周期一次,并将其传递给单独的函数(计算素数和、计数次数和在位置返回数字)。
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/164290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档