Computer Science, asked by weged, 8 months ago

Python - Write a function that returns the number of prime numbers that exist up to and including a given number
count_primes(100) --> 25

By convention, 0 and 1 are not prime.

Answers

Answered by LavishaHanda25
7

Answer:

You need to check all numbers from 2 to n-1 (to sqrt(n) actually, but ok, let it be n). If n is divisible by any of the numbers, it is not prime. If a number is prime, print it.

for num in range(2,101):

prime = True

for i in range(2,num):

if (num%i==0):

prime = False

if prime:

print (num)

You can write the same much shorter and more pythonic:

for num in range(2,101):

if all(num%i!=0 for i in range(2,num)):

print (num)

As I've said already, it would be better to check divisors not from 2 to n-1, but from 2 to sqrt(n):

import math

for num in range(2,101):

if all(num%i!=0 for i in range(2,int(math.sqrt(num))+1)):

print (num)

For small numbers like 101 it doesn't matter, but for 10**8 the difference will be really big.

You can improve it a little more by incrementing the range you check by 2, and thereby only checking odd numbers. Like so:

import math

print 2

for num in range(3,101,2):

if all(num%i!=0 for i in range(2,int(math.sqrt(num))+1)):

print (num)

Edited:

As in the first loop odd numbers are selected, in the second loop no need to check with even numbers, so 'i' value can be start with 3 and skipped by 2.

import math

print 2

for num in range(3,101,2):

if all(num%i!=0 for i in range(3,int(math.sqrt(num))+1, 2)):

print (num)

Explanation:

PLEASE MARK MY ANSWER AS BRAINLIST ❣️❣️❣️❣️

FOLLOW ME

Answered by pentiumrahul2001
2

Answer:

def count_primes(num):

   count = 0

   for i in range(2,num+1):

       value=True

       for j in range(2,i):

           if(i%j == 0):

               value=False

               break

       if value:

           count += 1

   return count

print("Enter a number : \n")

num=int(input())

print(count_primes(num))

Explanation:

it's self explanatory.

Similar questions