hi. i wrote this program:
Code:
/*
* A program to find prime number pairs, triplets etc.
* Prime number pairs are two prime numbers which are an exact number apart.
*/
#include <stdio.h>
#include <stdlib.h>
int checkprime(int, int, int, int);
struct asettings {
int high, low, difference, number;
};
int main(int argc, char *argv[])
{
/* Command line arguments */
struct asettings my_settings;
my_settings.high = 100;
my_settings.low = 1;
my_settings.difference = 2;
my_settings.number = 2;
int i;
if (argc != 1) {
for (i = 1; i <argc; i + 2) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 'h':
my_settings.high = atoi(argv[i+1]);
i = i + 1;
break;
case 'l':
my_settings.low = atoi(argv[i+1]);
i = i + 1;
break;
case 'd':
my_settings.difference = atoi(argv[i+1]);
i = i + 1;
break;
case 'n':
my_settings.number = atoi(argv[i+1]);
i = i + 1;
break;
default:
printf("Usage: %s -h highest_number -l lowest_number -d difference -n number_per_group\n", argv[0]);
exit(EXIT_FAILURE);
}
}
else {
printf("Usage: %s -h highest_number -l lowest_number -d difference -n number_per_group\n", argv[0]);
exit(EXIT_FAILURE);
}
break;
}
}
printf("This is a program to find groups of prime numbers separated by a fixed value.\n\n");
printf("Your current settings are: \n");
printf("Range for prime number search: %d and %d\n", my_settings.low, my_settings.high);
printf("Difference between prime numbers: %d\n", my_settings.difference);
printf("Number of prime numbers per group: %d\n", my_settings.number);
printf("Program will begin");
getchar();
/* Error occurs here */
int number = my_settings.low;
int yes = 1;
int counter = 0;
int temp, j;
while (number < my_settings.high) {
yes = checkprime(number, my_settings.difference, my_settings.number, 1);
if (yes == 0) {
temp = number;
counter = counter + 1;
printf("%d", number);
for (j = 1; j <= my_settings.number; j ++) {
temp = temp + my_settings.difference;
printf(", %d", temp);
}
printf(" are a prime number group\n");
}
number = number + 2;
}
printf("Total %d groups between %d and %d\n\nEnd of program\n", counter, my_settings.low, my_settings.high);
getchar();
exit(EXIT_SUCCESS);
}
int checkprime(int numb, int diff, int total, int current)
{
int divisor;
int check;
divisor = numb / 2;
for (;;) {
if (numb % divisor == 0) {
break;
}
else {
divisor = divisor - 1;
}
if (divisor == 1) {
if (numb % divisor == 0) {
break;
}
else {
if (current < total) {
check = checkprime(numb + diff, diff, total, current + 1);
if (check == 0) {
return (0);
}
}
else if (current == total) {
return (0);
}
break;
}
}
}
return(1);
}
it compiles fine, but when its running i get a corrupted stack/core dumped error. it occurs at the comment where i stated.
why doesnt it work? thx for the help!