Prime Number Generator, Print and Plot & save to csv file

# Load the ggplot2 package for plotting
library(ggplot2)

# Function to check if a number is prime
is_prime <- function(n) {
  if (n <= 1) {
    return(FALSE)
  }
  for (i in 2:sqrt(n)) {
    if (n %% i == 0) {
      return(FALSE)
    }
  }
  return(TRUE)
}

# Function to generate prime numbers up to a given limit
generate_primes <- function(limit) {
  primes <- c()
  for (i in 2:limit) {
    if (is_prime(i)) {
      primes <- c(primes, i)
    }
  }
  return(primes)
}

# Function to print and save prime numbers to a CSV file
print_and_save_primes <- function(limit, filename) {
  primes <- generate_primes(limit)
  
  # Print prime numbers
  cat("Prime Numbers up to", limit, ":", primes, "\n")
  
  # Save prime numbers to a CSV file
  prime_data <- data.frame(Prime_Numbers = primes)
  write.csv(prime_data, file = filename, row.names = FALSE)
}

# Function to plot prime numbers
plot_primes <- function(limit) {
  primes <- generate_primes(limit)
  
  # Plot prime numbers
  ggplot(data.frame(x = seq_along(primes), Prime_Number = primes), aes(x, Prime_Number)) +
    geom_point(shape = 21, color = "Black", fill = "Red", size = 2) +
    ggtitle("Prime Numbers") +
    xlab("Index") +
    ylab("Prime Number") +
    theme()
}

# Generate prime numbers up to P, save to "prime_numbers.csv", and plot
P <- 250 # Value of P was 1000000 & 10000000 for csv files uploaded to Kaggle

print_and_save_primes(P, "prime_numbers.csv") 
## Prime Numbers up to 250 : 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241
plot_primes(P)