In an interview with CBS News, Benjamin Netanyahu said Hamas was firing at Palestinians trying to get safety.
Hamas "don't give a hoot about the Palestinians", he said.
More than 11,500 people have been killed in Gaza, Hamas's health ministry says, since Israel went to war after Hamas's deadly attack on 7 October.
Some 1,200 people were killed and about 240 were taken back to Gaza as hostages when Hamas gunmen burst through the border and attacked Israeli communities and military bases.
Several of the missing people have since been confirmed dead, with Hamas blaming Israeli air strikes, although the claim cannot be independently verified.
Mr Netanyahu told the BBC's US partner CBS that Israel would "try to finish the job" of wiping out Hamas in Gaza with minimal civilian casualties.
He said: "That's what we're trying to do: minimal civilian casualties. But unfortunately, we're not successful."
Mr Netanyahu said the Israeli military dropped leaflets urging people to leave certain areas and called civilians on their mobile phones warning them to leave but claimed Hamas was preventing this "at gun point".
"Any civilian death is a tragedy. And we shouldn't have any because we're doing everything we can to get the civilians out of harm's way, while Hamas is doing everything to keep them in harm's way," he said.
He added Hamas had "fired at the safe corridors that we provided for the Palestinians".