Change “posts per page” depending on width

A simple approach would be a solution with CSS and PHP.

<?php
$postcount = 1;
$wp_query = new WP_Query();
while ($wp_query->have_posts()) : $wp_query->the_post();
?>

<div class="post-<?php echo $postcount ?>">
<h3><a href="https://wordpress.stackexchange.com/questions/111019/<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<div class="entry">
<?php the_excerpt(); ?>
</div>
</div>

<?php
$postcount++;
endwhile;
?>

Then you can style your website, depending on the screen size.

.post-1, .post-2, .post-3 { }
.post-4, .post-5, .post-6 { display:none; }