Home > Numbers
Just a search (Posted on 2018-08-18) |
|
List all prime numbers below 3000 that can be expressed as a^2 + n*b^2 for all integer n's from 1 to 10.
concur
|
Comment 5 of 5 |
|
For what it's worth, I concur w/ Charlie's solution. I give my program below, which is about the same length as C's and uses similar methods, but employs an older language (Gnu FORTRAN vs. VB). This gives primes that can be formed with all 10 n's: p = a^3 + n b^2 We list p, a, n_10, b 1009 3 10 10 1129 33 10 2 1201 29 10 6 1801 19 10 12 2521 39 10 10 2689 27 10 10 program ppI implicit none integer i,j,k,m,a,b,n,c,list(20000,4), 1 list1(20000,4),dum1,dum2,dum3,dum4,iold,cnt list(1,1)=2 list(1,2)=1 list(1,3)=1 list(1,4)=1 c=1 print*,' p = a^2 + n b^2 a n b' do n=1,10 do a=1,55 do b=1,55 i=a**2+n*b**2 if((i/2)*2.eq.i)go to 1 call isprime(i,m) if(m.eq.1.and.i.lt.3000)then c print*,i,a,n,b c=c+1 list(c,1)=i list(c,2)=a list(c,3)=n list(c,4)=b endif 1 enddo enddo enddo print*,'c = ',c do i=1,c do j=i+1,c-1 if( list(i,1).gt.list(j,1) .or. 1 ( list(i,1).eq.list(j,1) .and. 2 list(i,3).gt.list(j,3) ) )then dum1=list(i,1) dum2=list(i,2) dum3=list(i,3) dum4=list(i,4) list(i,1)=list(j,1) list(i,2)=list(j,2) list(i,3)=list(j,3) list(i,4)=list(j,4) list(j,1)=dum1 list(j,2)=dum2 list(j,3)=dum3 list(j,4)=dum4 endif enddo enddo
iold=2 cnt=0 do k=1,c i=list(k,1) if(i.eq.iold)then cnt=cnt+1 if(cnt.eq.10)then print 2,(list(k,j),j=1,4) cnt=0 endif else iold=i cnt=0 endif enddo
c print 2,(list(1,j),j=1,4) 2 format(4(i4,3x)) end
subroutine isprime(i,n) implicit none integer i,j,k,l,m,n n=0 k=sqrt(1.*i) do j=3,k m=(1.*i)/(1.*j) l=m*j if(l.eq.i)go to 1 enddo n=1 1 return end Edited on August 19, 2018, 12:38 am
|
|
Please log in:
Forums (0)
Newest Problems
Random Problem
FAQ |
About This Site
Site Statistics
New Comments (0)
Unsolved Problems
Top Rated Problems
This month's top
Most Commented On
Chatterbox:
|