12.14.2022

Miller–Rabin primality test (implement in Swift)

 func power(_ xx: Int, _ yy: Int, _ p: Int) -> Int

{
	var res = 1	 // Initialize result
	var x = xx % p // Update x if it is more than or
				// equal to p
	var y = yy
        while (y > 0)
	{
		// If y is odd, multiply x with result
		if 1 == y % 2{
			res = (res*x) % p
                }

		// y must be even now
		y = y>>1 // y = y/2
		x = (x*x) % p
	}
	return res
}

// false if n is composite and returns true if n is
// probably prime.
// d is an odd number such that d*2<sup>r</sup> = n-1
// for some r >= 1
func miillerTest(_ dd: Int, _ n: Int) -> Bool
{
	// Pick a random number in [2..n-2]
	// Corner cases make sure that n > 4
	let a = 2 + Int.random(in: 0...n-4)
        var d = dd
	// Compute a^d % n
	var x = power(a, d, n);

	if (x == 1 || x == n-1){
            return true
        }
	// Keep squaring x while one of the following doesn't
	// happen
	// (i) d does not reach n-1
	// (ii) (x^2) % n is not 1
	// (iii) (x^2) % n is not n-1
	while (d != n-1)
	{
		x = (x * x) % n;
		d *= 2;

		if (x == 1) {return false}
		if (x == n-1) {return true}
	}

	// Return composite
	return false
}

// It returns false if n is composite and returns true if n
// is probably prime. k is an input parameter that determines
// accuracy level. Higher value of k indicates more accuracy.
func isPrime(_ n: Int, _ k: Int) -> Bool
{
	// Corner cases
	if (n <= 1 || n == 4) {return false}
	if (n <= 3) {return true}

	// Find r such that n = 2^d * r + 1 for some r >= 1
	var d = n - 1
	while (d % 2 == 0){
		d /= 2
        }

	// Iterate given number of 'k' times
	//for (int i = 0; i < k; i++)
        for i in 0..<k{
		if (!miillerTest(d, n)){
			return false
                }
        }

	return true
}

6.12.2022

document.getElementById("demo").innerHTML在jquery中即$('#demo')[0].innerHTML

 1. 首先在HTML head加上:

 <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2. document.getElementById("demo")可用$('#demo')[0]取代,例如:

document.getElementById("demo").innerHTML = "Hello JavaScript!";

可寫成:

$("#demo")[0].innerHTML = "Hello JavaScript!";