The listings package can interact nicely with the multicol package. The frame stuff is done with the help of tcolorbox which, in turn, plays nicely with listings. It seems to be transitive!
The idea to highlight the numbers is taken from Gonzalo's answer.

\documentclass[landscape]{article}
\usepackage[margin = 2cm, includeheadfoot]{geometry}
\usepackage{lmodern}
\usepackage{multicol}
\usepackage{tcolorbox}
\tcbuselibrary{skins,listings}
\newtcblisting{mycpptwocol}[1][]{%
enhanced,
arc = 0pt,
outer arc = 0pt,
colback = blue!5,
colframe = blue!50!black,
listing only,
fonttitle = \bfseries,
listing options = {%
language = C++,
basicstyle = \ttfamily,
multicols = 2,
numbers = left,
xleftmargin = 1em,
showstringspaces = false,
},
overlay = {%
\fill[gray!30]
(interior.north west)
rectangle
([xshift = 2em]interior.south west);
\fill[gray!30]
([xshift = -1em]interior.north)
rectangle
([xshift = 1em]interior.south);
\draw[ultra thick, blue!50!black]
([xshift = -1em]interior.north) --
([xshift = -1em]interior.south);
},
/utils/exec = {%
\def\thelstnumber{%
\texttt{\csname two@digits\endcsname{\the\value{lstnumber}}}}},
title = {\centering\ttfamily #1}
}
\begin{document}
\begin{mycpptwocol}[helloworld.cpp]
#include <iostream>
int main()
{
std::cout<<"Hello World``;
return 0;
}
// This is a second column, just
// for fun !!!
\end{mycpptwocol}
\end{document}
EDIT As requested, a version with two leading zeros. FYI, \two@digits is a LaTeX core macro (see texdoc source2e) and \three@digits does not exist (so I define it, but you may again have some issue with \makeatletter).
\documentclass[landscape]{article}
\usepackage[margin = 2cm, includeheadfoot]{geometry}
\usepackage{lmodern}
\usepackage{multicol}
\usepackage{tcolorbox}
\tcbuselibrary{skins,listings}
\makeatletter
\def\three@digits#1{\ifnum#1<10 00\else\ifnum#1<100 0\fi\fi\number#1}
\makeatother
\newtcblisting{mycpptwocol}[1][]{%
enhanced,
arc = 0pt,
outer arc = 0pt,
colback = blue!5,
colframe = blue!50!black,
listing only,
fonttitle = \bfseries,
listing options = {%
language = C++,
basicstyle = \ttfamily,
multicols = 2,
numbers = left,
xleftmargin = 1.5em,
showstringspaces = false,
},
overlay = {%
\fill[gray!30]
(interior.north west)
rectangle
([xshift = 2.5em]interior.south west);
\fill[gray!30]
([xshift = -1em]interior.north)
rectangle
([xshift = 1.5em]interior.south);
\draw[ultra thick, blue!50!black]
([xshift = -1em]interior.north) --
([xshift = -1em]interior.south);
},
/utils/exec = {%
\def\thelstnumber{%
\texttt{\csname three@digits\endcsname{\the\value{lstnumber}}}}},
title = {\centering\ttfamily #1}
}
\begin{document}
\begin{mycpptwocol}[helloworld.cpp]
#include <iostream>
int main()
{
std::cout<<"Hello World``;
return 0;
}
// This is a second column, just
// for fun !!!
//
\end{mycpptwocol}
\end{document}

tcolorbox– cmhughes May 10 '14 at 15:51