Find out 2^n+1 , where n is a 3 digit number


 
Thread Tools Search this Thread
Top Forums Programming Find out 2^n+1 , where n is a 3 digit number
# 1  
Old 08-08-2010
Find out 2^n+1 , where n is a 3 digit number

I have to write a c program which takes a 3 digit number n and calculates the value of (2^n)+1 and then determines the number is prime or not.

I have tried to first calculate the value of 2^n and then adding one to it and then apply the logic of prime number.

but the ultimate problem is that if n is a 3 digit number for example 100
then 2^100 becomes a huge number for which my program is returning the same value of 2^100 and 2^100+1

for 2^50 and 2^50+1 it returns correct values with the diff of 1.
Code:
#include<stdio.h>
#include<conio.h>
#include<math.h>

main()
{
int n,i,a,count=0;
long double b,d,k=1.00;
clrscr();

printf("Enter any 3 digit number n::");

scanf("%d",&n);
b=pow(2,n);
d=b+k;
printf("%Lf\n%Lf",b,d);
}

Please help me out here.

Regards,
Prachi
# 2  
Old 08-08-2010
Now that's a typical homework question. Which algorithm were you asked to implement? RSA, AES, or even ElGamal?
# 3  
Old 08-09-2010
Your problem is due to the magnitude of the exponent i.e. 100.

The error in pow(x, y) is below about 2 ulps (Unit in Last Place or Unit of Least Precision) when its magnitude is moderate, but increases as pow(x, y) approaches the over/underflow thresholds until almost as many bits can be lost as are occupied by the floating-point format's exponent field, i.e. 11 bits for an IEEE 754 double. Moderate values of pow() are accurate enough that pow(int, int) is exact until it is bigger than 2**53 for IEEE 754. I do not have figures to hand for pow(int, double) but I seem to recall that there is no much difference.

If you require accuracy in the 2**100 range you need to use a arbitrary precision numeric library and not libm. Given that you appear to be on a DOS or WIN32 platform, this option may not be available to you.
# 4  
Old 08-09-2010
<conio.h>: It looks like Turbo C 3.0; long int is 32 bit. There is no bignum library for it.
You already have seen the problem with double precision arithmetic and large numbers.

You need a different compiler.
# 5  
Old 08-09-2010
Hi.

If I were doing this, I'd think about 2 facts: First, the base is a constant integer, second, that the exponents are all positive integers. That might lead us to consider an arithmetic package that need not be as general as things like bignum, perhaps one that we could write.

If this were not required to be in C, I think I would look at the scripting languages. I know that Icon for example has the capability to do extended range ( Integers in Icon can be arbitrarily large ... are represented by blocks of data that Icon manages ... large integers are supported in all arithmetic computations ... ).

On the other hand, I haven't had the need to write this, so this is really just a thought experiment Smilie ... cheers, drl
# 6  
Old 08-09-2010
On the other hand, Turbo C supports something modern compilers do not: supersized 80-bit long doubles.
# 7  
Old 08-09-2010
There is the The GNU MP Bignum Library library.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

I need to find in a file a list of number where last two digit end in a range

I all I am tryng to find a way to sort a list of number in a file by the value of last two digit. i have a list like this 313202320388 333202171199 373202164587 393202143736 323202132208 353201918107 343201887399 363201810249 333201805043 353201791691 (7 Replies)
Discussion started by: rattoeur
7 Replies

2. UNIX for Beginners Questions & Answers

Process only 4 digit odd number starting with zero

I am trying to process only IonCode_odd #'s (always 4 digits starting with zero), but the below isn't working as expected. Is there a better way? Thank you :). IonCode_0401_xxxx_xxxx_xxxx.bam IonCode_0401_xxxx_xxxx_xxxx.bam.bai IonCode_0401_xxxx_xxxx_xxxx.fastq... (2 Replies)
Discussion started by: cmccabe
2 Replies

3. Shell Programming and Scripting

How to compare specific digit in number?

Dear All, Lets say I have a number with following format: ####.12e-## now I want to compare place holder in position 1 and 2. How can I do that? Note: My number is stored in a variable say var. example: var=9999.12e-05 Thanks & Regards, linuxUser_ (6 Replies)
Discussion started by: linuxUser_
6 Replies

4. Shell Programming and Scripting

Regular expression for 6 digit number present in a line

Hello Team, i have a file test1.txt, in which i have to grep only the 6 digit number from it, Could you pls help in this. $cat test1.txt <description>R_XYZ_1.6 r370956</description> $ grep "\{6\}" test1.txt <description>R_XYZ_1.6 r370956</description> i need output as 370956. ... (3 Replies)
Discussion started by: chandana hs
3 Replies

5. Shell Programming and Scripting

Print a number up to last significant digit after decimal point

I want to write/print a number through a shell script up to its last significant digit (LSD) after the decimal point. Say, x=10.00056000000000000 I want to print x as x=10.00056. Note that x can be any thing so I cannot know the position of the LSD always. Thanks. (16 Replies)
Discussion started by: hbar
16 Replies

6. UNIX for Dummies Questions & Answers

list all files containing 4 digit number using grep

how can i list all files in my home directory that have a 4 digit id number, the line number where the id is located and the id itself not printing the entire line? (5 Replies)
Discussion started by: hobiwhenuknowme
5 Replies

7. Programming

generating 16 digit random number in C

Hi, How can we generate 16 digit random nos in C. (10 Replies)
Discussion started by: ajaysahoo
10 Replies

8. Shell Programming and Scripting

adding a 6 digit number retaining 0s on the left

i am new to shell scripting. i want to keep on increamenting a 6 digit number. For eg. 000000 + 1 = 000001 But instead of 000001 i get only 1. How do i do this ? Pls help. (8 Replies)
Discussion started by: kanchan_cp
8 Replies

9. Shell Programming and Scripting

Write a shell program to find the sum of alternate digits in a given 5-digit number

Hi Can any one please post the answer for the above program.................. (4 Replies)
Discussion started by: banta
4 Replies

10. Shell Programming and Scripting

Extracting 10 digit number from txt files

Hi, Was wondering if you could give me an example of extracting a 10 digit number from 5 txt files using a regular expression (the number is always different ) and storing the numbers in variables Thanks C19 (9 Replies)
Discussion started by: c19h28O2
9 Replies
Login or Register to Ask a Question