C语言轻松学习-6

我们要先了解一下什么是质数(素数),这里我仅大概叙述一下:质数(素数)就是除了1和它本身不能被其他自然整数整除的数值,若不懂请先自行百度百科

好了,我们了解完之后,我们就开始思考任务二的问题“输出某个范围内的所有质数(素数)”我们就来先输出[2,100]之间的所有质数(素数)吧,

首先我们的思路和上页的思路基本一致,先判断用户输入的一个数值是否是质数(素数)

这里的代码和质数(素数)的定义混合在一起,会有点逻辑上的难题,我思考了很长时间才写出来,大家刚开始学要慢慢分析,这里要多花点时间学习下,

因为不能被1和其自身整除,所以我们“for()”循环的初始变量为 i=2;i<sum;i++,

如果 用户输入的数值sum能够整除i的话,那么就要跳出循环

在外面为何要有一个 条件判断呢?

那是因为,我们跳出循环有两种情况,

情况一是执行了“break;”直接终止了正在循环的循环,

情况二是没有执行“break;”语句自行执行循环完毕跳出循环的,

若是情况一,则用户输入的数值肯定被某个整数整除了,固然就不可能是质数(素数)了,且直接循环终止,所以“i<sum”,

若是情况二,则用户输入的数值没有被某个整数整除,则绝对是质数(素数),那么循环是自动结束的,故“i>=sum”,

代码如下:

#include<stdio.h>
int main()
{
  int sum,i;
  scanf("%d",&sum);
  for(i=2;i<sum;i++)
  {
    if(sum%i==0)
    break;
  }
  if(i<sum)
  printf("非质数\n");
  else
  printf("质数\n"); 
}

调试代码截图:

好了,我们了解了 判断单个数值是否为质数,那么我们要求的是输出[2,100]内的所有质数,那么我们应该怎么去完成呢?

其实,这也与上页的内容基本相似,加上一个循环,就可以实现我们想要的,

代码如下:只是在上方的单个判断加上了个循环而已,就实现了我们想要的结果,

#include<stdio.h>
int main()
{
  int sum,i;
  for(sum=2;sum<=100;sum++) 
  {
    for(i=2;i<sum;i++)
    {
      if(sum%i==0)
      break;
    }
    if(i>=sum)
    printf("%d\n",sum);
  }
}

代码调试截图:

对比一下“质数表

发现我们的结果都是正确的。

小结:

我们通过学习了这两道题,我们应该会悟道一丝丝小灵感,写循环判断之前,我们应该先单独试一试内层的代码是否正确,之后外套循环即可,这样能省下我们大部分的时间和精力。

写代码时,要记得花括号相对应,且尽量能自行缩进代码就要缩进,不仅美观而且能让我们的思路更加清晰。

如果大家看完了,还没有悟道我所说的,那么请你自己写一遍这两道题,从错误中,慢慢领悟,不要急!

习题:

1.用C语言输出所有的四叶玫瑰数(代码和调试截图)

2.用C语言输出[1,100]以内的所有合数(代码和调试截图)

参考答案在下一页!

1 2 3
未经允许不得转载:晗雅|星空 » C语言轻松学习-6
分享到:

请选择你看完该文章的感受:

8瞧一瞧 3扯淡 5学到了 2不懂 7正能量 12无聊

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (选填)