质数的定义:如果一个数只能被1和它本身整除,那么他就是质数
对于找质因数的方法
方式1
对于一个合数来说;它必然能够被两个数相乘而得到,这两个数之间的关系也必然是一大一小或者是两个相同的数。那么,最小的数只能是大于等于2,因此它最大的因数也只能是合数的一半。只要判断这个数在2到它最大因数之间能否被整除,即可判定它是否是质数。
方式2
相对于方式1,此种方法使除数的范围变更小。N=根号N*根号N,N的因数除了根号N;其他都是成对出现的,且必定一个大于根号N,一个小于根号N。假设N不是质数,有个因数大于等于根号N(不是N本身),则N必定有一个与之对应的小于等于根号N的因数,也就是说,如果2到根号N都没有它的因数,那么对应的根号N到N都没有N的因数,N就是个质数。
判定方法
方法一:
首先,判定1是不是质数,如果是,则输出“不是质数”;否则定义变量a,赋值为2,对变量a进行累加;在a小于输入数的一半时;假如输入的数能够被a整除的话,就将除到的值赋给变量b;如果不能整除,则a进行累加判断,直至退出循环。接下来对b进行判断。如果b大于等于2时,则输出“不是质数”;否则输出是质数。
`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">`
var numa = parseInt(prompt("请输入一个数"));
var num = parseInt(numa/2);
var a = 2;
var b;
if (numa==1) {
document.write("不是质数");
}
else{
for(a;a<=num;a++){
if(numa%a == 0)
b=numa/a;
}
if(b>=2){
document.write("不是质数");
}
else{
document.write("是质数");
}`
方法二:
首先,定义一个变量counter并赋值为0;利用while语句进行对a进行累加,并判断num值能否被整除,如果能,则对counter自增;如果不能,则a自增。加入num是质数的话,它只能被自身和1整除,counter能自增两次。那么如果counter等于2,则输出是质数;否则输出“不是质数”;
主要代码
`
var num = parseInt(prompt("请输入一个数));
var a = 1;
var counter = 0;
for(a<=num;a++){
if(num%a==0){
counter++;
}
if(counter==2) {
document.write("是质数");
}else{
document.write("不是质数");
}
}
`
方法三:
此种方法与方法二类似;就是先立一个flag,让flag的值为false;如果整除,则让flag的值为true;最后对flag的值判断与否。此处省略5000字。
主要代码:
`
var num = parseInt(prompt("请输入一个数"));
var flag = false;
var i = num-1;
while(i>=2){
if(num%i==0){
flag = true;
}
i--;
}
if (flag) {
document.write("我不是质数");
}else{
document.write("我是质数");
}
`
总结:拿到此题时,犯得最主要的错误就是在判定其能被整除的时候,直接输出,这样造成了多次打印。改正的就是在循环里立了个flag,在循环的外面来判定flag的真假,再来打印是否是质数。这样就不会造成重复打印了。
网友评论