# C Exercises: Attractive numbers up to 100

## C Programming Challenges: Exercise-33 with Solution

A number is called an attractive number if the number of its prime factors (whether distinct or not) is also a prime number.

Example:

The number 30, whose prime decomposition is 2 × 3 × 5, is an attractive number because the number of its prime factors (3) is also a prime number.

The number 100, whose prime decomposition is 2 × 2 x 5 × 5, is not an attractive number because the number of its prime factors (4) is not a prime number.

Write a C program to generate the attractive numbers up to 100.

**C Code:**

```
#include <stdio.h>
#define MAX 100
int PrimeOrNot(int n1)
{
int i=2;
while(i<=n1/2)
{
if(n1%i==0)
return 0;
else
i++;
}
return 1;
}
int no_of_prime_factors(int n) {
int ctr = 0, nn = 2;
if (n == 1) return 0;
if (PrimeOrNot(n)) return 1;
while (1) {
if (!(n % nn)) {
ctr++;
n /= nn;
if (n == 1) return ctr;
if (PrimeOrNot(n)) nn = n;
}
else if (nn >= 3) nn += 2;
else nn = 3;
}
}
int main() {
int i, n, ctr = 0;
printf("The attractive numbers up to and including %d are:\n\n", MAX);
for (i = 1; i <= MAX; ++i) {
n = no_of_prime_factors(i);
if (PrimeOrNot(n)) {
printf("%4d", i);
if (!(++ctr % 10)) printf("\n");
}
}
printf("\n");
return 0;
}
```

Sample Output:

The attractive numbers up to and including 100 are: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 55 57 58 59 61 62 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 82 83 85 86 87 89 91 92 93 94 95 97 98 99

**Flowchart:**

## C Programming Code Editor:

** Contribute your code and comments through Disqus.**

**Previous C Programming Exercise:** Prime number in strictly descending decimal digit order.

**Next C Programming Exercise:** Colorful numbers.

**What is the difficulty level of this exercise?**

Test your Programming skills with w3resource's quiz.

## C Programming: Tips of the Day

**What's an object file in C? **

An object file is the real output from the compilation phase. It's mostly machine code, but has info that allows a linker to see what symbols are in it as well as symbols it requires in order to work. (For reference, "symbols" are basically names of global objects, functions, etc.)

A linker takes all these object files and combines them to form one executable (assuming that it can, i.e.: that there aren't any duplicate or undefined symbols). A lot of compilers will do this for you (read: they run the linker on their own) if you don't tell them to "just compile" using command-line options. (-c is a common "just compile; don't link" option.)

Ref : https://bit.ly/3CbzF8M

**Exercises: Weekly Top 16 Most Popular Topics**- SQL Exercises, Practice, Solution - JOINS
- SQL Exercises, Practice, Solution - SUBQUERIES
- JavaScript basic - Exercises, Practice, Solution
- Java Array: Exercises, Practice, Solution
- C Programming Exercises, Practice, Solution : Conditional Statement
- HR Database - SORT FILTER: Exercises, Practice, Solution
- C Programming Exercises, Practice, Solution : String
- Python Data Types: Dictionary - Exercises, Practice, Solution
- Python Programming Puzzles - Exercises, Practice, Solution
- C++ Array: Exercises, Practice, Solution
- JavaScript conditional statements and loops - Exercises, Practice, Solution
- C# Sharp Basic Algorithm: Exercises, Practice, Solution
- Python Lambda - Exercises, Practice, Solution
- Python Pandas DataFrame: Exercises, Practice, Solution
- Conversion Tools
- JavaScript: HTML Form Validation