There are different ways to count the weeks.
To get the correct answer (according to ISO 8601), you can try this expression (assuming the date is in a Compose called 'Date'):
if(less(div(add(10,sub(dayOfYear(outputs('Date')),if(less(dayOfWeek(outputs('Date')),1),7,dayOfWeek(outputs('Date'))))),7),1),if(or(and(equals(mod(sub(int(formatDateTime(outputs('Date'), 'yyyy')), 1),4),0),not(equals(mod(sub(int(formatDateTime(outputs('Date'), 'yyyy')), 1),100),0)),equals(dayOfWeek(concat(string(sub(int(formatDateTime(outputs('Date'), 'yyyy')),1)),'-01-01')),3)),and(not(equals(mod(sub(int(formatDateTime(outputs('Date'), 'yyyy')), 1),4),0)),equals(dayOfWeek(concat(string(sub(int(formatDateTime(outputs('Date'), 'yyyy')),1)),'-01-01')),2))),53,52),if(greater(div(add(10,sub(dayOfYear(outputs('Date')),if(less(dayOfWeek(outputs('Date')),1),7,dayOfWeek(outputs('Date'))))),7),if(or(and(equals(mod(int(formatDateTime(outputs('Date'), 'yyyy')),4),0),not(equals(mod(int(formatDateTime(outputs('Date'), 'yyyy')),100),0)),equals(dayOfWeek(concat(formatDateTime(outputs('Date'), 'yyyy'), '-01-01')),3)),and(not(equals(mod(int(formatDateTime(outputs('Date'), 'yyyy')),4),0)),equals(dayOfWeek(concat(formatDateTime(outputs('Date'), 'yyyy'), '-01-01')),2))),53,52)),1,div(add(10,sub(dayOfYear(outputs('Date')),if(less(dayOfWeek(outputs('Date')),1),7,dayOfWeek(outputs('Date'))))),7)))
You can find further explanations here: