/* Program to print a given number in words. The program handles
numbers from 0 to 9999 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* A function that prints given number in words */
void convert_to_words(char *num)
{
int len
= strlen(num
); // Get number of digits in given number
/* Base cases */
if (len == 0) {
return;
}
if (len > 4) {
fprintf(stderr
, "Length more than 4 is not supported\n"); return;
}
/* The first string is not used, it is to make array indexing simple */
char *single_digits[] = { "zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
/* The first string is not used, it is to make array indexing simple */
char *two_digits[] = {"", "ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
/* The first two string are not used, they are to make array indexing simple*/
char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"};
char *tens_power[] = {"hundred", "thousand"};
/* Used for debugging purpose only */
/* For single digit number */
if (len == 1) {
printf("%s\n", single_digits
[*num
- '0']); return;
}
/* Iterate while num is not '\0' */
while (*num != '\0') {
/* Code path for first 2 digits */
if (len >= 3) {
if (*num -'0' != 0) {
printf("%s ", single_digits
[*num
- '0']); printf("%s ", tens_power
[len
-3]); // here len can be 3 or 4 }
--len;
}
/* Code path for last 2 digits */
else {
/* Need to explicitly handle 10-19. Sum of the two digits is
used as index of "two_digits" array of strings */
if (*num == '1') {
int sum = *num - '0' + *(num + 1)- '0';
printf("%s\n", two_digits
[sum
]); return;
}
/* Need to explicitely handle 20 */
else if (*num == '2' && *(num + 1) == '0') {
return;
}
/* Rest of the two digit numbers i.e., 21 to 99 */
else {
int i = *num - '0';
printf("%s ", i
? tens_multiple
[i
]: ""); ++num;
if (*num != '0')
printf("%s ", single_digits
[*num
- '0']); }
}
++num;
}
}
/* Driver program to test above function */
int main(void)
{
int low, high, i, flag;
//printf("Enter two numbers(intervals): ");
scanf("%d %d", &low
, &high
);
printf("Prime numbers between %d and %d are: ", low
, high
);
while (low < high)
{
flag = 0;
for(i = 2; i <= low/2; ++i)
{
if(low % i == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
++low;
//int n=low;
}
convert_to_words("232");
return 0;
}
LyogUHJvZ3JhbSB0byBwcmludCBhIGdpdmVuIG51bWJlciBpbiB3b3Jkcy4gVGhlIHByb2dyYW0gaGFuZGxlcwogICBudW1iZXJzIGZyb20gMCB0byA5OTk5ICovCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAovKiBBIGZ1bmN0aW9uIHRoYXQgcHJpbnRzIGdpdmVuIG51bWJlciBpbiB3b3JkcyAqLwp2b2lkIGNvbnZlcnRfdG9fd29yZHMoY2hhciAqbnVtKQp7CiAgICBpbnQgbGVuID0gc3RybGVuKG51bSk7ICAvLyBHZXQgbnVtYmVyIG9mIGRpZ2l0cyBpbiBnaXZlbiBudW1iZXIKIAogICAgLyogQmFzZSBjYXNlcyAqLwogICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbXB0eSBzdHJpbmdcbiIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChsZW4gPiA0KSB7CiAgICAgICAgZnByaW50ZihzdGRlcnIsICJMZW5ndGggbW9yZSB0aGFuIDQgaXMgbm90IHN1cHBvcnRlZFxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQogCiAgICAvKiBUaGUgZmlyc3Qgc3RyaW5nIGlzIG5vdCB1c2VkLCBpdCBpcyB0byBtYWtlIGFycmF5IGluZGV4aW5nIHNpbXBsZSAqLwogICAgY2hhciAqc2luZ2xlX2RpZ2l0c1tdID0geyAiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZml2ZSIsICJzaXgiLCAic2V2ZW4iLCAiZWlnaHQiLCAibmluZSJ9OwogCiAgICAvKiBUaGUgZmlyc3Qgc3RyaW5nIGlzIG5vdCB1c2VkLCBpdCBpcyB0byBtYWtlIGFycmF5IGluZGV4aW5nIHNpbXBsZSAqLwogICAgY2hhciAqdHdvX2RpZ2l0c1tdID0geyIiLCAidGVuIiwgImVsZXZlbiIsICJ0d2VsdmUiLCAidGhpcnRlZW4iLCAiZm91cnRlZW4iLAogICAgICAgICAgICAgICAgICAgICAiZmlmdGVlbiIsICJzaXh0ZWVuIiwgInNldmVudGVlbiIsICJlaWdodGVlbiIsICJuaW5ldGVlbiJ9OwogCiAgICAvKiBUaGUgZmlyc3QgdHdvIHN0cmluZyBhcmUgbm90IHVzZWQsIHRoZXkgYXJlIHRvIG1ha2UgYXJyYXkgaW5kZXhpbmcgc2ltcGxlKi8KICAgIGNoYXIgKnRlbnNfbXVsdGlwbGVbXSA9IHsiIiwgIiIsICJ0d2VudHkiLCAidGhpcnR5IiwgImZvcnR5IiwgImZpZnR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l4dHkiLCAic2V2ZW50eSIsICJlaWdodHkiLCAibmluZXR5In07CiAKICAgIGNoYXIgKnRlbnNfcG93ZXJbXSA9IHsiaHVuZHJlZCIsICJ0aG91c2FuZCJ9OwogCiAgICAvKiBVc2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZSBvbmx5ICovCiAgICBwcmludGYoIlxuJXM6ICIsIG51bSk7CiAKICAgIC8qIEZvciBzaW5nbGUgZGlnaXQgbnVtYmVyICovCiAgICBpZiAobGVuID09IDEpIHsKICAgICAgICBwcmludGYoIiVzXG4iLCBzaW5nbGVfZGlnaXRzWypudW0gLSAnMCddKTsKICAgICAgICByZXR1cm47CiAgICB9CiAKICAgICAvKiBJdGVyYXRlIHdoaWxlIG51bSBpcyBub3QgJ1wwJyAqLwogICAgIHdoaWxlICgqbnVtICE9ICdcMCcpIHsKIAogICAgICAgIC8qIENvZGUgcGF0aCBmb3IgZmlyc3QgMiBkaWdpdHMgKi8KICAgICAgICBpZiAobGVuID49IDMpIHsKICAgICAgICAgICAgaWYgKCpudW0gLScwJyAhPSAwKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzICIsIHNpbmdsZV9kaWdpdHNbKm51bSAtICcwJ10pOwogICAgICAgICAgICAgICAgcHJpbnRmKCIlcyAiLCB0ZW5zX3Bvd2VyW2xlbi0zXSk7IC8vIGhlcmUgbGVuIGNhbiBiZSAzIG9yIDQKICAgICAgICAgICAgfQogICAgICAgICAgICAtLWxlbjsKICAgICAgICB9CiAKICAgICAgICAvKiBDb2RlIHBhdGggZm9yIGxhc3QgMiBkaWdpdHMgKi8KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLyogTmVlZCB0byBleHBsaWNpdGx5IGhhbmRsZSAxMC0xOS4gU3VtIG9mIHRoZSB0d28gZGlnaXRzIGlzCiAgICAgICAgICAgICAgIHVzZWQgYXMgaW5kZXggb2YgInR3b19kaWdpdHMiIGFycmF5IG9mIHN0cmluZ3MgKi8KICAgICAgICAgICAgaWYgKCpudW0gPT0gJzEnKSB7CiAgICAgICAgICAgICAgICBpbnQgc3VtID0gKm51bSAtICcwJyArICoobnVtICsgMSktICcwJzsKICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHR3b19kaWdpdHNbc3VtXSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KIAogICAgICAgICAgICAvKiBOZWVkIHRvIGV4cGxpY2l0ZWx5IGhhbmRsZSAyMCAqLwogICAgICAgICAgICBlbHNlIGlmICgqbnVtID09ICcyJyAmJiAqKG51bSArIDEpID09ICcwJykgewogICAgICAgICAgICAgICAgcHJpbnRmKCJ0d2VudHlcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAKICAgICAgICAgICAgLyogUmVzdCBvZiB0aGUgdHdvIGRpZ2l0IG51bWJlcnMgaS5lLiwgMjEgdG8gOTkgKi8KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpbnQgaSA9ICpudW0gLSAnMCc7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzICIsIGk/IHRlbnNfbXVsdGlwbGVbaV06ICIiKTsKICAgICAgICAgICAgICAgICsrbnVtOwogICAgICAgICAgICAgICAgaWYgKCpudW0gIT0gJzAnKQogICAgICAgICAgICAgICAgICAgIHByaW50ZigiJXMgIiwgc2luZ2xlX2RpZ2l0c1sqbnVtIC0gJzAnXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKytudW07CiAgICB9Cn0KIAovKiBEcml2ZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9uICovCmludCBtYWluKHZvaWQpCnsKICAgIGludCBsb3csIGhpZ2gsIGksIGZsYWc7CiAgICAvL3ByaW50ZigiRW50ZXIgdHdvIG51bWJlcnMoaW50ZXJ2YWxzKTogIik7CiAgICBzY2FuZigiJWQgJWQiLCAmbG93LCAmaGlnaCk7CgogICAgcHJpbnRmKCJQcmltZSBudW1iZXJzIGJldHdlZW4gJWQgYW5kICVkIGFyZTogIiwgbG93LCBoaWdoKTsKCiAgICB3aGlsZSAobG93IDwgaGlnaCkKICAgIHsKICAgICAgICBmbGFnID0gMDsKCiAgICAgICAgZm9yKGkgPSAyOyBpIDw9IGxvdy8yOyArK2kpCiAgICAgICAgewogICAgICAgICAgICBpZihsb3cgJSBpID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZsYWcgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChmbGFnID09IDApCiAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbG93KTsKCQogICAgICAgICsrbG93OwogICAgLy9pbnQgbj1sb3c7ICAgIAogICAgfQogICAgcHJpbnRmKCIlZCIsbG93KTsKICAgIGNvbnZlcnRfdG9fd29yZHMoIjIzMiIpOwogICAgCgogCiAgICByZXR1cm4gMDsKfQ==