Я бы, наверное, сперва попробовал выделить обвязку страниц. Т. е. взять несколько страниц сайта и определить на них повторяющийся текст. А дальше уже эмпирически подбирать правила для разбора получившегося. Например, часто название компании идет после или перед ©, часто оно упоминается в тайтле, часто перед ним идут слова "компания", "ООО" и т. п.
Так же можно попробовать найти, к примеру img с классом logo и посмотреть у него alt или title. Как дополнительный вариант для проверки пойдет.
Единого алгоритма нет, так как нет единого стандарта описания организаций на сайтах.
Чтобы не переходить вручную нужно переходить программно. Для этого пишутся (или используются универсальные) программы-парсеры.
Если будете писать сами, то алгоритм нужно будет делать многошаговый и многовариантный.
В идеальном мире на идеальных сайтах присутствует микроразметка hCard, из которой можно извлечь название организации и другие данные о ней, заботливо предоставленные хозяевами сайта.
Все остальные варианты лучше сразу обработать вручную, так как их слишком много :)
Нужно парсить HTML, но только не делай это через регулярные выражения. Каждый раз когда ты парсишь HTML регулярками — в мире умирает один разработчик.
Для Хабра, например футер легко найти, у него логичный id:
<div id="footer">
Дальше ты берешь весь текст из футера и ищешь там название компании и ссылки на страницу "Контакты".
У других сайтов футер или хедер найти будет тяжелее. Нужно будет проанализировать несколько десятков сайтов и составить список правил, по котором можно будет легко найти в коде страницы блоки с нужными елементами.</div>
На каждом отрезке от 10*n до 10*n+9 таких чисел ровно 5. Поэтому нам достаточно посчитать число таких полных отрезков, и обработать краевые отрезки. Пусть sumdig(n) - функуция, которая выдаёт остаток от деления суммы цифр n на 2. Тогда: int s0=(B/10-A/10-1)*5; int s1=(10+sumdig(A/10)-A%10)/2; int s2=(2+B%10-sumdig(B/10))/2; return s0+s1+s2;