用C语言如何判断素数?

如题所述

素数又称质数,所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。

思路1、判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。

思路2、判断方法还可以简化。

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之间有无因子即可。


两种思路的代码请看解析。

拓展资料:

素数(prime number)又称质数,有无限个。素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

参考资料:

百度百科——素数

百度百科——C语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-06

首先要知道素数是不等于1,它的因子只有1和它本身。判断一个数是否为素数,可以用大于1小于给定数的所有数去除给定数,如果有任何一个能够除尽,就表示是合数,反之是素数。下面是具体如何用C语言判断素数的过程:

1、打开visual C++ 6.0,点击【文件】-【新建】-【文件】,然后选择【C++ Source File】;

2、输入预处理命令和主函数:

#include<stdio.h>       /*函数头:输入输出头文件*/

void main()             /*空类型:主函数*/

3、定义变量并输入一个数字:

int m,i;                    /*定义变量的数据类型为整型*/

printf("输入一个数:");     /*输出文字提示*/

scanf("%d",&m);             /*输入一个数字*/

4、用for函数和if函数判断是否是素数:

for(i=2;i<=m;i++)           /*用for函数重复下面步骤*/

if(m%i==0)              /*判断输入的数是否能被除1和本身以外的数整除*/

break;

if(i>m)                 /*判断i是否大于m*/

printf("%d 是素数\n",m);       /*输出是素数*/

else

printf("%d 不是素数\n",m);     /*输出不是素数*/

5、最后我们输入一个数来验证这条程序是否正确。

本回答被网友采纳
第2个回答  2018-01-05

介绍三种使用C语言来判断素数的方法,以及用做素数表来判断找素数的方法。

第3个回答  推荐于2019-08-23

    从键盘上输入任意一个整数,然后判断该数是否为素数。 
    如果是素数则输出”This is a prime.” 
    否则输出“This is not a prime.”

    方法一:判断n是否能被2~n-1间的整数除

    方法二:判断n是否能被2~√n间的整数除

    C语言中——三种方法判断是偶数还是奇数

    开头代码:

    #include <stdio.h>

    int main(int argc, const char * argv[])

    {int a;

    printf("请输入一个数:");

    scanf("%d",&a);

    方法一:求余

    if (a%2)    {

    printf("奇数!\n");

    }

    else

    {printf("偶数!\n");

    }

    方法二:三目运算符

    a%2?printf("奇数!\n"):printf("偶数!\n");

    方法三:位与&

    if (a&1)

    {printf("奇数!\n");

    }

    else

    {printf("偶数!\n");

    }

本回答被网友采纳
第4个回答  2021-10-23
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,k,i;
bool prime;
cin >> n;
{
prime = true;
k = int(sqrt(n));
for (i = 2; i <= k;i++)
if (n%i == 0)
{
prime = false;
break;
}
if (prime)
{
cout << "prime" << endl;
}
else
{
cout << "not prime" << endl;
}
}
cout << endl;
return 0;
}
相似回答