超级素数是指从个位起删除0位、1位、2位……直到只剩最后1位都是素数的十进制正整数。可以自定义一个素数判断函数,对某一正整数n及从个位起每删除1位的新数逐一进行判断,都是素数的则是题解。以下代码先要求输入正整数n,输出2~n之间的所有超级素数:
#include "stdio.h"int prime(int n){//判断素数,素数返回0,否则返回1
int i
if(n>2 && !(n&1) || n<2)
return 1
for(i=3i*i<=ni+=2)
if(!(n%i))
return 1
return 0
}
int main(int argc,char *argv[]){
int n,i,t
printf("Input n(int n>1)...\nn=")
if(scanf("%d",&n)!=1 || n<2){
printf("Input error, exit...\n")
return 0
}
for(i=2i<=ni++){
for(t=itt/=10)//从低位删除0位,1位...直到只剩1位都是素数的为超级素数
if(prime(t))
break
if(!t)
printf("%d ",i)
}
printf("\n")
return 0
}
运行样例如下:
比如页面上有一个文本框,可以输入任意数字,有一个按钮,点击计算。我要获取文本框输入的值,传入一个函数参数内,点击按钮时,调用该函数实现输出0到该输入的数字之间的质数。怎么动态传入获取的值呢?1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>输出质数</title>
<style type="text/css">
#main{
text-align: center
}
#btn{
width: 25%
height: 25px
}
</style>
</head>
<body>
<div id="main">
<h3>请输入一个大于零的数字,输出零到该数字之间的质数</h3>
<form>
<input type="text" id="btn" name="btn" placeholder="请输入一个大于零的数字" />
<input type="button" id="btn2" name="btn2" value="点击计算" onclick="outputPrime()" /> //这里怎么传入参数呢?
</form>
<div>
<p id="result"></p>
</div>
</div>
<script type="text/JavaScript">
var prime = document.getElementById("btn").value
var result = document.getElementById("result")
var btncli = document.getElementById("btn2")
//输出零到指定数字以内的质数
function outputPrime(num){
var arr = []
for(var i=2i<=numi++){
if(i == 2){
console.log(i)
arr.push(i)
}else if(i%2 != 0){
for(var j=2j<ij++){
if(i%j == 0){
break
}else if(j == i-1){
console.log(i)
arr.push(i)
result.innerHTML = arr
}
}
}
}
}
</script>
</body>
</html>
for(let i=1i<=100i++){if(check(i)) {
console.log(i)
}
}
// 判断当前给定的数 num 是否为素数, 是素数返回 true, 否则返回 false
function check(num){
if(num === 1) {
// 1 不是素数也不是合数, 返回 false
return false
} else {
// 声明变量用于统计从1~根号下 num,之间 能被 num 整除的数的个数
let count = 0
for(let i=1i<=Math.sqrt(num)i++) {
if(num%i === 0) {
count++
// 当发现在1~根号下 num 之间有超过1个数可以被 num 整除, 说明 num 一定不是素数,直接返回false, 后面的数不用判断了
if(count >1) {
return false
}
}
}
// 因为素数只能被1和自身整除,
// 那么从1~根号下 num 之间一定只有一个数(1)可以被 num 整除, 所以当 count 等于1时, 这个num 就是素数
return count == 1
}
return false
}