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

供稿:hz-xin.com     日期:2025-01-13

在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=2;i<num;i++){if(num%i==0){a++; // 素数个数加1}}

if(a==0){printf("%d是素数。
", num);}else{printf("%d不是素数。
", 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=2;i<=k;i++)

if(m%i==0)

break;

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

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

if(i>k)

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

else

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

return 0;}

C++编程语言

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

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

支持数据封装和数据隐藏

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

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

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

支持继承和重用

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

支持多态性

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

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

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

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



C语言,c++写判断素数
判断素数就是判断除了1和它本身外还有没有其他的约数,也就是能整除它的数,如果有的话就不是素数,没的话就是素数。所以要用循环来逐个判断,看能否整除,也不需要全部判断,所以用sqrt函数来开根号,只要判断根号的一边就行了。比如判断29的话,只要用29除以2到sqrt(29),就可判断是不是素数啦 ...

c++输入一个正整数,判断它是否为素数。如果是素数,则输出。“如不是...
include<iostream> using namespace std;int main(){ int n,i; bool chk=true;cin>>n;for(i=2;i<n;i++)if(n%i==0){ cout<<i<<" "; \/\/如要求一行一个," "改成endl chk=false;} if(chk==true)cout<<n<<"是一个素数";else cout<<n; \/\/它本身也是约数 return 0;} ...

如何用C++写一个关于判断一个数是否为素数的程序!
<<"";j++;if(j%10==0)//每隔十个数字换行 cout<<endl;} } int main(){ long start=time(NULL);cout<<(bool)isPrimeNumber(29)<<endl;print Num(1000);longend=time(NULL);cout<<endl<<"Timespent:"<<(end-start+1)<<endl;} ...

c++求任意两个数之间的所有素数
【解题思路】本题的重点在如何判断一个数是否素数。判断素数的唯一标准就是能不能被除了1和本身之外的其它数整除,可以通过循环来判断,比如要判断27是否素数,可以用一个循环,从2开始到26逐个检测,看27能否被其中某个数整除,如果能就不是素数,否则就是素数。判断一个数是否被另一个数整除可以用取...

如何判断一个数是不是素数c++
如果一个正整数n不能被从2到根号n之间的任何一个整数整除,那么这个正整数n就是一个素数。for(i=2;i*i<=n;i++)if(n%i==0)break;if(n%i==0)printf"No");else printf("Yes");

c++ 快速判断一个数是不是素数
设n为输入 include<iostream> include<cmath> using namespace std;int n,i,k;int main(){ cin>>n;if(n==1) {cout<<"1不是一个质数\\n"; return 0;} i=floor(sqrt(n)); k=2;while(k<=i&&n%k!=0) k++;if(k>i) cout<<n<<"是一个质数\\n";else cout<<n<<"不是一个...

c++编写判断一个正整数是否是素数的函数
if(b==0) 这个语句写反了,b=0就不是素数啦;你的 int prime(int x)函数里也是错的,if语句不能跳出循环,所以返回的 t就是就是最后一次循环的值 。include<iostream> using namespace std;int prime(int x){ int n;for(n=2;n<x\/2;n++){ if(x%n==0)return 0; \/\/只要有一个...

C++判断一个数是否为质数
两段代码的输出结果相同。①输入一个整数:1所以1是质数。②输入一个整数:97所以97是质数。③输入一个整数:10所以10不是质数。质数:又称素数,所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。C++:在中国大陆的程序员圈子中通常被读...

C++编写一个自定义函数判断一个整数是否为素数,在主函数中调用该函数输...
include<iostream> using namespace std;void fun(int m){ int i=2;while(i<m)if(m%i==0)break;else i++;if(i==m){ cout<<m<<"是素数"<<endl;return ;} cout<<m<<"不是素数"<<endl;} int main(){ int n;cout<<"请输入一个数:"<<endl;cin>>n;if(n>1)fun(n);else...

使用c++判断素数
你回想下数学上素数是什么意思:只能被1和他本身整除 int prime(int n){ \/\/这个就是通过i枚举从2 到 n\/2的所以数 for (int i=2;i<n\/2+1;i++)\/\/n%i,看是否有一个数能整除该数 if (n%i==0){ \/\/假如有的话就返回个false说明这个数不是素数 return false;break;} \/\/枚举了所有...