用C语言如何判断素数

如题所述

第1个回答  2018-07-20
//素数定义:除了1和本身外无法被其他自然数整除的数,叫做素数,也称质数,如:2,3,5,7一系列(负数或1和0都不是素数)
#include<stdio.h>
int main()
{
printf("请输入需要判断的数字:\n");
int num;
scanf("%d",&num); //从键盘输入数字储存到num中

if (num <= 1)
printf("%d不是素数\n",num); //只要输入小于等于1的数直接判断为不是素数
else
{
int count=0;
for (int i = 2; i < num; i++)
{
if (num%i == 0) //用num除以2,3,4,5,6。。。。等等所有数,判断是否能整除。
count++; //每次被整除时count自动增加1
}
if (count > 0) //若count大于0,则证明存在被整除的数,证明不是素数。
printf("%d不是素数\n", num);
else
{
printf("%d是素数\n", num);
}
}
return 0;
}
第2个回答  2018-07-21

用C语言判断素数有多种方法

其中最好理解的一种如下:

设定因子为n,所判断的数为x,然后n从2开始到x-1。

每次都用x%n,如果有任一判断为0,则不为素数。

下面是C语言函数代码

int sushu(int x)
{
    int i;
    for(i=2;i<x;i++)
    {
        if(x%i == 0)
        {
            return 0;
        }
    }
    return 1;
}

另外如果是大量数据需要判断是否为素数,可以用排除法来完成

例如如果要找出10000之前的所有素数,可以依次排除从2开始到100(根号10000)的数,然后剩下的都是素数。

下面是C语言代码

int main()
{
    int a[10001];
    int i ,j;
    for(i=0;i<10001;i++)
    {
        a[i] = 1;
    }
    a[0] = 0;
    a[1] = 0;
    
    for(i = 2;i<100;i++)
    {
        for(j = 2;j<100;j++)
        {
            a[i*j]=0;
        }
    }
    
    for(i=0;i<10001;i++)
    {
        if(a[i])
        {
            printf("%d",i);
        }
    }
    return 0;
}

第3个回答  2018-06-27

谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数
另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。(原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可)

#include<stdio.h>
#include<math.h>
void main()
{
int m,i,k;
printf("请输入一个整数:");
scanf("%d",&m);
k=(int)sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>k)
printf("%d 是素数。\n",m);
else
printf("%d 不是素数。\n",m);
}

第4个回答  2018-07-09

素数是只能被 1 和它自身整除的数 设数m

设置一个循环,从2开始,到m-1

每循环一次,就用m去除,如果没有一次相除余数等于0(不能整除)

那么他是素数

我举个例子吧 

#include<stdio.h>
int main ()
{
    int m,i,x,flag=1;
    printf("Input:");
    scanf("%d",&m);
    for(i=2;i<m;i++)
    {
    x=m%i;
    if(x==0)       /*如果循环完毕,没有 x没有等于0一次则说明没有被整除过*/
      {
      flag=0;     
      }
    }
    
    if(flag)
    {
    printf("这个数是素数:");
    }
    else
    {
     printf("这个数不是素数:");
    }
}

纯手打,楼主满意的话请采纳哦~

第5个回答  2018-08-31

题主(我这里本来想骂脏话的)是不是死了给个采纳行不行我给你写这么久

还有一种叫米勒罗宾素数法,自己去网上搜吧

有两种做法

第一种是最简单的死做法 

纯手打代码如下:

#include <bits/stdc++.h>
#define maxn 1000
using namespace std;

int n;

int main(){
cin>>n;                            //n 表示输出2~n 之间的素数
for(int i=2;i<=n;i++){
bool flag = true;          //flag记录 i 是否有约数
for(int j=2;j<=sqrt(i);j++)        
if (i % j == 0) {            //判断
flag = false;
break;
}
if (flag) cout<<i<<" \n";            //输出
}
cout<<endl;
return 0;
}

第二种叫埃氏筛法 更加高效快速

#include <bits/stdc++.h>
#define maxn 1000
using namespace std;

//纯手打

bool a[maxn];                            //如果a[i] == true 则i为合数; 反之为素数
int n;

int main(){
cin>>n;
memset(a,0,sizeof(a));
for(int i=2;i<=sqrt(n)+1;i++){
for(int j = 2;j<=n/i;j++) a[i*j] = 1;  
}
for(int i=2;i<=n;i++) if (!a[i]) cout<<i<<" ";
cout<<endl;
return 0;
}

c语言中素数的判定方法
1、基本方法 最常见的素数判定方法是试除法。即对于给定的正整数n,从2开始逐个除以小于n的数,如果存在能整除n的数,则n不是素数;如果不存在能整除n的数,则n是素数。这种方法的时间复杂度为O(n)。2、优化方法 为了提高素数判定的效率,可以对试除法进行一些优化。例如,可以只试除小于等于n的平方...

c语言判断素数
素数是只能被1和它本身整除的正整数。要判断一个数是否为素数,可以使用试除法:从2到该数的平方根之间依次试除,如能整除,则非素数;否则是素数。以下是C语言实现判断素数的代码:c include include int isPrime(int n) { if (n < 2) return 0; \/\/ 小于2的数不是素数 int i;for (i = ...

C语言如何判断素数?
1、素数的判断。根据素数定义,除了1和本身不存在其它约数的正整数为素数。所以在C语言中判断n是否为素数可以从2开始到到n-1逐一尝试,如果可以整除说明不是素数。更进一步,可以从2判断到n\/2或者n的算术平方根,如果不存在约数,那么即为素数。除此以外,判断素数的算法还有素数筛等。2、判断素数的...

c语言怎么判断素数?
1、首先需要打开vs软件工程,准备好一个空白的C语言文件,引入头文件,主函数中暂时没有内容:2、这里开始编写代码,这里判断素数需要用到平方根,所以要在头文件中引入math库,然后编写判断素数的函数,函数有唯一的参数n,代表素数。判断的依据是素数n只要不能被 2 到根号下n之 间任一整数整除,则n...

c语言如何判断素数
按照如下步骤即可用C语言判断素数:1、首先,打开visual C加加6.0,然后点击左上角的文件,再点击新建。2、接着,在弹出的新建对话框中点击C加加Source File。3、其次在新建的文件文本框中输入预处理命令和主函数,即函数头和空类型。4、再定义变量并输入一个数字,即定义变量的数据类型,输出文字...

判断一个数是否为素数c语言
判断一个数是否为素数c语言,如下:分析:只能被1和它本身整除的整数称为素数。在数学中,要判断n是否为素数,通常让n除以2V的每一个整数,如果,能被2V几的某个整数整除,则说明,不是素数,否则n一定是素数。方法一:用for语Q判断n是否为整数 在这个代码中,我们首先定义了一个名为sprime的函数,...

用C语言编写判断一个数是否是素数的程序
1、打开ubuntu并开启一个终端,输入命令vim is_prime.c,打开编辑页面,输入预处理指令#includestdio.h用于在主函数中调用判断函数。然后定义一个函数int is_prime(int n),即判断整数n是否为素数。2、首先,判断这个数是否小于2.若是,则直接返回0,即表示它不是一个素数。3、然后定义中间的因数i,...

c语言如何判断一个整数是素数。
C语言程序如下:include<stdio.h> int main(){ int i,j,k=0;for(i=2;i<10000;i++){ for(j=2;j*j<=i;j++)if(i%j==0)break;if(j*j>i){ printf("%d ",i);k++;if(k%5==0)printf("\\n");} } }

C语言判断素数
要了解C语言如何判断一个数是否为素数,首先明白素数定义:大于1的自然数,只能被1和它本身整除,不能被其他自然数整除。接下来,我们将通过一个C语言程序来实现这个功能:<?php function isPrime($n) { if ($n <= 1) { return false; \/\/ 1不是素数 } flag = true; \/\/ 假设n是素数 for ...

如何用c语言判断一个数是不是素数
首先要知道素数是不等于1,它的因子只有1和它本身。判断一个数是否为素数,可以用大于1小于给定数的所有数去除给定数,如果有任何一个能够除尽,就表示是合数,反之是素数。下面是具体如何用C语言判断素数的过程:1、打开visual C++ 6.0,点击【文件】-【新建】-【文件】,然后选择【C++ Source File...

相似回答