matching string in two files of different length

Dear all,
I have the following problem (it originates in the domain of bio-inf, but it is a general problem).

I have two files of one column each and of different length: a.txt and b.txt.
a.txt contains alphanumeric strings (around 30 digit) and there are 300 rows
b.txt contains alphanumeric strings (around 1000 digit) and there are 16 rows

I want to check (of course for every row) if the string in a.txt is contained by any of the 16 string in b.txt, and if it is the case print the corresponding (long) string of b.txt

I have tried with a "for" cycle and the gawk lines

for string_b in [... the 16 strings separated by a space  ...]; do 
        awk "{if (match(${string_b},/'\$1'/)){print '${string_b}' else {print 'nulla'}}" < string_a.txt > result
done 

but it does not work (and in any case it is not very efficient or smart)

Many thanks! Any help or suggestion is welcome!

nawk 'FNR==NR {a[$0];next} {for(i in a) if (i ~ $0) print}' a.txt b.txt
awk '
NR==FNR { key[$0]++ ; next }
{
   for (k in key) {
       if (index($0, k)) {
         print $0
         break
      }
   }
}
' a.txt b.txt

Jean-Pierre.