c++怎么判断一个数是否为素数?

c++怎么判断一个数是否为素数?,第1张

在c++语言里,判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数

1、思路一,代码:

#include <stdio.h>

int main(){

int a=0// 素数的个数

int num=0// 输入的整数

printf("输入一个整数:")

scanf("%d",&num)

for(int i=2i<numi++){if(num%i==0){a++// 素数个数加1}}

if(a==0){printf("%d是素数。\n", num)}else{printf("%d不是素数。\n", num)}return 0}

判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。

2、思路二,代码:

#include <stdio.h>

#include <math.h>

void main(){int m// 输入的整数 

int i// 循环次数

int k// m 的平方根 

printf("输入一个整数:")

scanf("%d",&m)

// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 

k=(int)sqrt( (double)m )

for(i=2i<=ki++)

if(m%i==0)

break

// 如果完成所有循环,那么m为素数

// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 

if(i>k)

printf("%d是素数。\n",m)

else

printf("%d不是素数。\n",m)

return 0}

C++编程语言

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可铅前以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。

C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

支持数据封装和数据隐藏

在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。

在面向对象的程序设计中,将数据和对该数据进行合法 *** 作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定吵旦的若干私有成员、公有成员及保护成员。

完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。

支持继承和重用

在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。

支持多态性

采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这升激扰个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。

多态性的这一特性允许使用高级抽象。

继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。

以上内容参考 百度百科:C++

以下是C++代码:

Copy code

#include <iostream>

using namespace std

bool isPrime(int num){

if(num <2){

return false

}

for(int i=2i*i<=numi++){

if(num % i == 0){

return false

}

}

return true

}

int main(){

int n

cout <<"请如弯输入正整数n:"

cin >>n

if(isPrime(n)){

cout <<"yes" <<endl

}else{

cout <<"no" <<endl

}

return 0

}

该程序首先定义了一个函数 isPrime,用于判断一个整数是否为素数。isPrime 接收一个整数 num 作为参数,如果 num 不大于 1,则返回 false,如果 num 能被任何比 1 大但小于等于 sqrt(num) 的整数整除,则返回 false,否则返回 true。其中,双重族碰循环用于遍历 num 向下取整后的所有整数。

接着,程序读入一个正整数 n 。如果 n 是素数,则输出 "yes",否则输出 "no"。

需要注意的是,本程序中使用兆橡谈了布尔值来表示判断结果,如果需要对素数进行一

首先先定义一个函数用于判断一个数是否是素数,接着主函数接受键盘输入,并调用该函数判断输入的数是否是素数。

素数就是只能被1和尺姿好自身整除的数。故判断n是否是素数,可以用n依次除以n-1,n-2……2,如果能整除则不是素数,否则是素数。

参考代码如下:

#include<陵铅stdio.h>

#include<iostream>

using namespace std

int isfun(int n){//判断参数n是否是素数 

int i

if(i<册肆2) return 0

for(i=n-1i>=2i--){

if(n%i==0) return 0

return 1

int main( ) { 

int n

cin>>n

if(isfun(n)) printf("%d是素数!\n",n)

else printf("%d不是素数!\n",n)

return 0

}

运行结果:

23

23是素数!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12557844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存