寻找素数

时间:2014-11-03 20:09:12

标签: javascript numbers

的JavaScript:

var UI; // Number entered by user
var TV; // Number value to be used in calculations
var HITS; // Counter
var DD; // Division denominator

UI = window.prompt("Enter a whole number to be tested as a prime number", "0");
TV = parseInt("UI", [10]);

HITS = 0;
DD = TV;

while (DD > 0) {
  if (TV % DD == 0) {
    HITS++
  }
  HITS--
}
window.document.write(+UI + " is ");
if (HITS > 2) {
  window.document.write(" not");
}
window.document.write(" a prime number.");

谁能告诉我自己做错了什么?一切都在运行,除非它不是素数而不是"不是"字符串不会出现。任何帮助是极大的赞赏。

4 个答案:

答案 0 :(得分:0)

    UI = window.prompt("Enter a whole number to be tested as a prime number", "0");
    TV = parseInt(UI,10);

    HITS = 0;
    DD = TV;

    while(DD>0) {
        if (TV%DD===0) {
            HITS++; }
        DD--;
    }

我改变了很多,现在有效。

答案 1 :(得分:0)

// FOR FOR FOON

    PrimeNumber=function(){
        var d, l, primelist;
        _isPrimeNumber = function(n){
            var result = true;
            _setVariables(n);
            while( d < l ){
                if(n % d == 0){
                    result = false;
                    break;
                }
                do{
                    d = d + 1;
                }while(!_check(d));
                primelist.push(d);
                l = n/d;
            }
            return result;
        };

        _getAllPrimeTill = function(n){
            _setVariables(n);

            while( d < n ){
              d = d + 1;
              if(_check(d)){
                primelist.push(d);
              }
            }

            return primelist;
        };

        _setVariables = function(n){
            d=2;
            l=n/2;
            primelist = new Array();
            primelist.push(d);
        };

        _check = function(n){
            var result = true;
            for(var i = 0; i < primelist.length; i++){
                if(n % primelist[i] == 0 ){
                    result = false;
                    break;
                }
            }
            return result;
        };

        return {
          isPrimeNumber :_isPrimeNumber,
          getAllPrimeTill : _getAllPrimeTill
        };
    }();

答案 2 :(得分:-1)

你有:

DD = TV;

// The value of DD is tested, but not modified in the loop
while(DD>0) {

    // This part is irrelevant to the test
    if (TV%DD == 0) {
        HITS++
    }
    HITS--
}

DD未在循环中修改,因此如果条件为true或false,则它将始终为true或false。因此,如果 DD 是任何大于零的值,则条件始终为真。

答案 3 :(得分:-1)

import java.util.ArrayList;
import java.util.List;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
*if you want to find all prime numbers between 2 and n, change loop "while( d < l ){"  to "while( d < n ){" and you will get al prime numbers in primelist. 
*/
/**
 *
 * @author hp
 */
public class PrimeNumber {

    public static void main(String[] args) {
        String result = " IS A PRIME NUMBER";
        int n = 127;
        int d = 2;
        int l = n / 2;
        List <Integer> primelist =  new ArrayList<Integer>();

        while( d < l ){
            if(n % d == 0){
                //System.out.println();
                //System.out.println(n + " can be divided by " + d);
                //System.out.println(d + " * " + (n / d) + " = " + n);
                result = " IS NOT A PRIME NUMBER";
                break;
            }
            do{
                d = d + 1;
            }while(!isPrimeNumber(d,primelist));
            //System.out.print(d + ", ");
            primelist.add(new Integer(d));
            l = n/d;
        }
        //System.out.println();
        System.out.println(n + result);
    }

    private static boolean isPrimeNumber(int n, List <Integer> primelist){
        boolean result = true;
        for(Integer i : primelist){
            if(n % i.intValue() == 0 ){
                result = false;
            }
        }
        return result;
    }
}