美文网首页
C语言-判断一个数是否为素数

C语言-判断一个数是否为素数

作者: 广陵周惊蛰 | 来源:发表于2020-01-06 10:06 被阅读0次

问题描述:判断一个数是不是素数

源代码:

第一版代码:

缺陷:

1、没有考虑1既不是素数也不是非素数。

2、for语句中,取值范围【2,n】太多了,没有必要。

#include<stdio.h>
int main (void)
{
    int i,n,sum=0;

    printf("**********************\n判断一个数是不是素数\n**********************\n素数概念:只能被1和本身整除\n\n");
    
    printf("请输入一个值:");
    scanf("%d",&n);
    
    for(i=2;i<n;i++){
        if(n%i==0){
        printf("\n%d能被%d整除\n",n,i);
        sum = sum+1;
        }
    }
    
    printf("\n%d能被%d个整数整除\n",n,sum);
    
    if(sum=0){
        printf("\n%d是素数",n);
    }else{
    
        printf("\n%d不是素数",n);
    }
    
    return 0;
 } 

第二版代码:

修复第一版缺陷:

1、添加n=1时候的情况判断。

2、在判断素数过程中,由于n不可能被大于n/2的数字整除,所以原先i的取值区间可缩小为【2,n/2】,数学上能证明,该区间可以是【2,根号n】。

#include<stdio.h>
int main (void)
{
    int i,n,sum=0;

    printf("**********************\n判断一个数是不是素数\n**********************\n素数概念:只能被1和本身整除\n\n");
    
    printf("请输入一个值:");
    scanf("%d",&n);
    
    for(i=2;i<n/2;i++){
        if(n%i==0){
        printf("\n%d能被%d整除\n",n,i);
        sum = sum+1;
        }
    }
    
    printf("\n%d能被%d个整数整除\n",n,sum);
    
    if(sum=0&&i!=1){
        printf("\n%d是素数",n);
    }else{
    
        printf("\n%d不是素数",n);
    }
    
    return 0;
 } 

第三版代码:

精简版代码:

只要判断是否是素数,其他不做输出,同时去掉sum变量。

#include<stdio.h>
int main (void)
{
    int i,n;

    printf("**********************\n判断一个数是不是素数\n**********************\n素数概念:只能被1和本身整除\n\n");
    
    printf("请输入一个值:");
    scanf("%d",&n);
    
    for(i=2;i<n/2;i++)
        if(n%i==0)  break;
    if(i>n/2&&n!=1)
        printf("\n%d是素数",n);
    else
        printf("\n%d不是素数",n);
        
    return 0;
 } 

运行结果:

判断素数第一二版代码 精简版判断素数

遇到问题:

1、printf("%d不是素数",n);这里的后面是“n”,不是“&n”,"&n"在scanf中实使用

2、判断素数还可以用break的方法。见上文第三版代码。

3、在判断素数过程中,由于n不可能被大于n/2的数字整除,所以原先i的取值区间可缩小为【2,n/2】,数学上能证明,该区间可以是【2,根号n】。

程序参数:

  • 输出大小: 149.033203125 KiB
  • 编译时间: 0.30s

相关文章

  • C语言-判断一个数是否为素数

    问题描述:判断一个数是不是素数 源代码: 第一版代码: 缺陷: 1、没有考虑1既不是素数也不是非素数。 2、for...

  • Sth about Python 07 -- if-else缩进

    判断一个数是否为素数 x = int(raw_input('Enter a positive number:'))...

  • 素数(质数)筛选法模板

    判断一个数是否为质数 素数筛选法(时间复杂度O(nlogn))

  • 素数筛法——1. 素数判定

    素数判定问题 题目描述 给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。 输入描述: 测试数据有多组...

  • 嵌入式学习笔记19.11.15

    素数的判断方法: int prime(int n)//判断是否为素数 { int i; for(i=2;i

  • C语言必须要记住的经典程序

    1、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去...

  • 07-python函数-案例

    案例1:判断一个数是否为素数 案例2:输出100以内的素数; 案例3:判断三边能否构成三角形; 案例4:求三角形周...

  • 输入一个数,判断是否为素数

    题目解析: 在大于1的自然数中,除了1和它本身以外不再有其他因数。 变相地理解为:用一个数分别去除2到sqrt(这...

  • python 判断1-100内的素数

    。。。。 判断1-100内的素数,第一个for循环是要判断的素数的范围,第二个for循环是判断该数是否为素数

  • 素数的判断

    5.4.1 素数的判断 存在整数a(判断其是否为素数) 如果存在一个正整数b可以整除素数a,即b是a的约数,那么必...

网友评论

      本文标题:C语言-判断一个数是否为素数

      本文链接:https://www.haomeiwen.com/subject/snuhactx.html