html代码网站,开展网站建设服务,怎么用一个主机做多个网站,平面设计有哪些公司目录
一.常规方法
二.进阶方法
三.代码示例#xff08;运用进阶方法#xff09; 质数是整数且仅能被自身和1整除
一.常规方法
所以我们根据质数的这个定义便可用以下思路判断#xff1a;设需要检测的数为x。y为除1和自己的除数
逐步检测x是否可被y整除#xff0c;如x…目录
一.常规方法
二.进阶方法
三.代码示例运用进阶方法 质数是整数且仅能被自身和1整除
一.常规方法
所以我们根据质数的这个定义便可用以下思路判断设需要检测的数为x。y为除1和自己的除数
逐步检测x是否可被y整除如x被y整除则x为合数否则为质数
整理以下就有如下函数
bool primeNumber(int n){for(int i2;in;i){//因为质数仅能被自身和1整除所以除数可以从2开始 if(n%i0)return false;//能被其他数整除 }return true;
}
二.进阶方法
有了上述代码我们不妨仔细想想设需要检测的数为x除数为y
因为所以如果abx那么a、b中一个数一定大于等于另一个一定小于等于那么我们只需要判断i的情况即可
为了得到这里需要用到sqrt()函数用来开方它存在于#includemath.h和#includecmath中primeNumber()函数改进如下
bool primeNumber(int n){for(int i2;isqrt(n);i){//因为质数仅能被自身和1整除所以除数可以从2开始 if(n%i0)return false;//能被其他数整除 }return true;
}
这样做的话有如下好处设需要检测的数为x
如果遇到合数时方法二运算时间和方法一相同因为方法一是一遇到能被除1和自己的除数整除的情况时便退出和方法二相同但是如果遇到质数时方法二则会节省比方法一的一半还多的时间方法一因为没有能被除1和自己的除数整除的情况所以要判断x-1个数方法二仅需要判断少于x/2个数所以建议采用方法二
三.代码示例运用进阶方法
为了让c/c的朋友都看懂我将采用c语言来写这个程序
#includestdio.h
#includecmath
bool primeNumber(int n){for(int i2;isqrt(n);i){//因为质数仅能被自身和1整除所以除数可以从2开始 if(n%i0)return false;//能被其他数整除 }return true;
}
int main(){int n;scanf(%d,n);if(primeNumber(n))printf(质数\n);else printf(合数\n);
}
运行结果 如有疑惑欢迎评论区留言或私信