判断一个数是否为素数?
判断一个数是否为素数?
判断一个球是否为素数?
网上一大堆,逻辑是:循环i从2到根号n取整,将原数除以i,都不能整除的为素数,0、1单独判断。
循环i从2到根号n取整,将原数除以i,都不能整除的为素数,0、1单独判断。
几个复制粘贴的我也是呵呵。
如果不希望超时,没有严格的内存限制,当然是使用筛法,网上可以找到示例。
筛法的思路就是:开一个大数组(根据你想求解多大范围内的素数来开),全部置1。先筛掉能整除2的(从2开始,步长为2的迭代,把所有偶数都置0),再筛掉能整除4的,一直到sqrt(最大数字)。。。筛完之后,数组里还剩下的为1的就是素数。
当有多组测试输入时,效率会很高,只需计算一次,就能连续输出结果。而且除了sqrt()的计算,没有用到除法。
首先你要清楚什么叫素数。
最简单的方法就是依次用2~n-1去整除,只要能被其中一个数整除,n就不是素数;更简单的说,只需要用2~根号n的所有整数去除N就可以了。
C语言中,可以用for循环语言做。
使用取余符号%计算余数,如果为零,那么不为素数,否则,是素数
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
cout<<"请输入一个数:";
cin>>a;//输入;
//判断
for(int i=2;i<a;i++){
if(a%i==0){
//余数是否为零
cout<<"不是素数";
return 0;//如果不是素数,输出,程序结束
}
}
cout<<"是素数";
//如果所有判断都通过,那么是素数
return 0;
}
点个采纳,谢谢
#include <iostream>
using namespace std;
int aaa(int n){
if(n<=1){
return 2;
}
for(int i=2;i<n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main(){
int x;
cin>>x;
if(aaa(x)==0){
cout<<"合数";
}
else if(aaa(x)==1) {
cout<<"质数";}
else{
cout<<"非质非合";
}
}