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;

}

相关文章
|
6月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
51 0
|
6月前
|
C语言
【C语言刷题每日一题】——打印100到200之间的素数
【C语言刷题每日一题】——打印100到200之间的素数
|
6月前
|
C语言
C语言----寻找100~999范围内的质数--素数
C语言----寻找100~999范围内的质数--素数
|
6月前
|
C语言 Windows
C语言素数的不同求法
C|素数的不同求法及在线测试比较
|
6月前
|
C语言
C语言---函数----100~n之间的素数
C语言---函数----100~n之间的素数
|
6月前
|
算法 C语言
C语言——oj刷题——回文字符串
C语言——oj刷题——回文字符串
41 2
|
6月前
|
算法 C语言
C语言——oj刷题——字符串左旋和轮转数组
C语言——oj刷题——字符串左旋和轮转数组
48 1
|
6月前
|
C语言
C语言——oj刷题——调整数组使奇数全部都位于偶数前面
C语言——oj刷题——调整数组使奇数全部都位于偶数前面
42 1
|
6月前
|
C语言
C语言----利用函数调用找某个范围内的素数。
C语言----利用函数调用找某个范围内的素数。
|
6月前
|
C语言
【C语言】输入一个正整数,判断其是否为素数
【C语言】输入一个正整数,判断其是否为素数
174 0