c/python_用函数Prime(int n, int m, int *num)实现获得n到m之间所有的素数/filter函数筛选质数

problem:

输入两个数n和m(n<m),求n到m之间所有的素数,存放在一个数组中,最后打印出来。

要求,用函数Prime(int n, int m, int *num)实现获得这些素数

输入
两个数n和m(n<m)

输出
求n到m之间所有的素数,存放在一个数组中,最后打印出来。

样例输入
2
3
样例输出
2
3

c

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
//在此下方插入自定义函数对的声明:
int  Prime(int m,int n,int* prime_array);
//主函数main
int main()
{
    int m,n;
    while( scanf("%d%d",&m,&n) != EOF)
    {
        int prime_array[100];
        for(int i = 0;i<Prime(m,n,prime_array);i++) 
            printf("%d\n",prime_array[i]);
    }

    return 0;
} 
//主函数结束.
//在下方编写自定义函数:

int  Prime(int m,int n,int* prime_array)
{
    int k=0;
    
    for(int i = m;i <= n;i++)
    {
       
        int j = 2;
        if(i == 0 || i == 1)
        {
            continue;
        }
        else if (i == 2 || i ==3)
        {
            prime_array[k++] = i;
        }
        else
        {
            for (; j * j < i + 1; j++)
            {
                if (i % j == 0)
                {            
                    break;
                }
         
            }
            if(j*j>=i+1)
                prime_array[k++] = i;
        }
    }
    return k;//k是从0开始的.
}

python

filter prime numbers in specified range

'''
Description: 
Version: 2.0
Author: xuchaoxin
Date: 2021-04-08 22:55:30
LastEditors: xuchaoxin
LastEditTime: 2021-04-10 09:35:25
'''


def is_prime(x):
    """ list contains several 0 :
    a empty list is False,if the len(list)>0,it is True:
    if the x is prime,the list will be empty,not list is True,so return True
    else, the x is not prime,the list will not be empty,the list is True,not list is False,so return False"""
    if x==0 or x==1:
        return False
    list = [x for i in range(2, x) if x % i == 0]
    # print(not list)
    return not list


prime_iterator = filter(lambda x: is_prime(x), range(0, 20))

for i in prime_iterator:
    print(i)

posted @ 2023-04-25 01:07  xuchaoxin1375  阅读(31)  评论(0)    收藏  举报  来源