C语言Oj题判断素数几种方式详解

简介: 输入一个数判断它是不是素数,并且不是的情况把它打印出来不是素数。

前言

各位少年:少年们好,我是博主那一脸阳光,上期给大家分享了for循环的使用和break还有continue的使用方法,大家已经明白了语法的使用,我们就要融会贯通它,我们来刷一道OJ题。好,我们先做一些小型的代码把他引到出来。

题目:输入一个数判断它是不是素数,并且不是的情况把它打印出来不是素数。

首先,我们得知道素数是什么?素数就是除了它本身和1以外的数,都整除不了的数,0不是素数。

数学例子:11除10 除不开 除9也除不开,至到除到1才可以除开,所以说11是素数。

那么很显然这里需要用到循环,和选择分支语句。首先循环的条件是什么?首先我们定义一个变量i :i不能是1,因为素数只能被它本身和1相除,所以i是2 限制条件呢?那自然就是i-1了

那怎么实现相除部分呢?很显然聪明的肯定了想到 如果变量i%j余于1那就是素数,否则就不是素数。好,我们把代码写出来,对了,重点0不是素数

1.#include<stdio.h>
int main()
{
    int i = 0;
    scanf("%d", &i);
    int j = 2;
    for (j = 2; j <= i-1; j++)
    {
        if (i % j==0)
        {
            printf("不是素数");
            break;
        }
    }
    if (i % j == 1)
    {
        printf("是素数\n");
    }
    if (i == 0)
    {
        printf("0不是素数");
     }
    return 0;
}

很显然这个代码实现了,这个代码,完整实现了,但繁琐了很显然我们再写一次,再把代码简化一下。,我们把素数打印出来,把100到的素数都打印出来。

#include<stdio.h>
int main()
{
int i=0;
int count=0;
for(i=100;i<=200;i++);
{
int flag=1;
int j-0;
for(j=2;j<=i-1;j++)
{
if(i%j==0)
    {
   flag=0;
    break;
   }
}
 if(flag==1)
  {
  printf("%d",i);
   count++;
  }
}
printf("\ncount=%d\n",count);
return 0;
}1.

很显然这个代码还是不够简便,时间复杂度的非常高,时间复杂度大家可以理解为执行的时间,我们怎么解决这个问题呢?我们介绍个库函数。sqrt开平方。

#include<stdio.h>
int main()
{
int i=0;
int count=0;
for(i=101;i<=200;i+=2);
{
int flag=1;
int j-0;
for(j=2;j<=i-1;j++)
{
if(i%j==0)
    {
   flag=0;
    break;
   }
}
 if(flag==1)
  {
  printf("%d",i);
   count++;
  }
}
printf("\ncount=%d\n",count);
return 0;
}1.

我们先来渐渐应道出来你们,我们找到个素数每次加2,它还是素数不能被整除。好我们再优化一下,我们思考一下

16能写成 2*8 4*4
=a*b
a和b中至少有一个数字《=1.

#include<stdio.h>

int main()

{

 

int i=0;

int count=0;

for(i=101;i<=200;i+=2);

{

int flag=1;

int j-0;

for(j=2;j<=sqrt(i);j++)

{

if(i%j==0)

   {

  flag=0;

   break;

  }

}

if(flag==1)

 {

 printf("%d",i);

  count++;

 }

}

printf("\ncount=%d\n",count);

return 0;

}

相关文章
|
26天前
|
C语言
C语言之完数、素数、回文数合集
C语言之完数、素数、回文数合集
|
1月前
|
C语言
【01】判断素数/质数(C语言)
【01】判断素数/质数(C语言)
|
4月前
|
C语言
c语言编程练习题:7-33 统计素数并求和
c语言编程练习题:7-33 统计素数并求和
22 0
|
1月前
|
C语言
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
24 0
|
1月前
|
算法 C语言
C语言判断素数
C语言判断素数
15 0
|
3月前
|
C语言
【C 语言经典100例】C 练习实例36 - 求100之内的素数
【C 语言经典100例】C 练习实例36 - 求100之内的素数
18 0
|
3月前
|
C语言
【C 语言经典100例】C 练习实例33 - 质数(素数)判断
【C 语言经典100例】C 练习实例33 - 质数(素数)判断
18 0
|
9月前
|
算法 C语言
【C语言】判断一个数是否为素数(素数求解的N种境界)(下)
【C语言】判断一个数是否为素数(素数求解的N种境界)(下)
72 0
|
5月前
|
C语言
C语言素数判断以及打印素数表
C语言素数判断以及打印素数表
106 0
|
5月前
|
算法 搜索推荐 程序员
C语言第十三练——输入一个正整数,判断这个数是否是素数
C语言第十三练——输入一个正整数,判断这个数是否是素数
88 0