allPrimes打印出一个空元组Python

时间:2016-09-15 21:23:06

标签: python tuples primes

所以我有这个代码,它应该打印出一个包含所有素数的元组。但相反,它只是打印出一个空的元组......

  

谁能告诉我为什么?   我也必须使用一个TUPLE。

public class Package1
{

    double length;
    double width;
    double height;

Package1(double a,double b, double c)
{
    length=a;
    width=b;
    height=c;
}
public void isCube()
{
    if(length==width && width==height)
        System.out.println("The box is a cube.");
    else
        System.out.println("Box is not a cube. ");

}

public class Runtime{
public static void main(String[] args){
Package1[] boxes = new Package1[rows];

    for(int j = 0; j < boxes.length; j++)
    {
        boxes[j] = new Package1(arr[j][0], arr[j][1], arr[j][2]);

    }
  

这是正确的代码

def isPrime(number):
 for i in range(2,int(number**(0.5))+1):
     if number % i == 0:
         return False
     else:
         return True


def allPrimes(number):
    tup=()
    for i in range(1,number):
        if isPrime(i) == True:
            tup += (i,)
    print(tup)

allPrimes(26)

4 个答案:

答案 0 :(得分:2)

您的<CTRL+Z>函数从1开始。每个整数都可以被1整除,因此它总是返回-->ATD"*111*38#; <--OK ... <--+CUSD: 1,"UTF16BE(menu with list of command)",72 <--> -->command<CTRL+Z> <--OK ... <--+CME ERROR: ss not executed -->ATD"*111*38#; <--OK ... <--+CUSD: 1,"UTF16BE(menu with list of command)",72 <--> -->command <CTRL+Z> <--OK ... <--+CUSD: 2,"UTF16BE",72 。从2开始。

isPrime()

另外,你的allPrimes应该使用列表而不是元组,你只能使用False而不是def isPrime(number): if number < 2: return False for i in range(2, int(number ** (0.5)) + 1): if number % i == 0: return False return True ,但它会按原样使用。

答案 1 :(得分:1)

这是因为你的isPrime功能无法正常工作。

app.directive('i', ['$interpolate', function($interpolate) { return { scope: { i: '<' }, template: '<div>{{ i.text1 || \'DIV1\' }}</div><div>{{ i.text2 || \'DIV2\' }}</div>', link: function (scope, element, attrs) { element.after($interpolate(element.html())(scope)); element.remove(); } }; }]); ,即除以1&#39;时的余数,对于整数,总是为零。

答案 2 :(得分:1)

您的代码中存在一些问题:

1)isPrime在错误的行上返回True

2)您正在功能范围之外打印tup

3)您没有处理1isPrime

的案例

4)您正在使用tuple来存储素数,list更好;效率更高。

5)在Python中使用snake case作为函数名。

进行更改:

def is_prime(number):
    if number < 2:
        return False

    for i in range(2,int(number**(0.5))+1):
        if number % i == 0:
            return False

    return True

def all_primes(number):
    my_primes = []
    for i in range(1,number):
        if is_prime(i): 
            my_primes.append(i)
    return my_primes

if __name__ == "__main__":
    print all_primes(40)

答案 3 :(得分:0)

因为在第一次迭代中,如果number % i != 0:数字为素数,则必须在迭代结束时返回True,如果`number%i == 0:

则中断
def isPrime(number):
    res = True
    if number < 2:
        res = False
    else:
        for i in range(2,int(number**0.5)+1):
            if number % i == 0:
                res = False
                break
    return res