Credo di aver trovato una soluzione generale con complessità O(1)
codice:
int sum2(int k,int n)
{
	k = (k+1)/2 *2;
	n = (n)/2 *2;
	if(k>n) 
		return 0;
	int tot = ((n + k) * ((n -k)/2 +1))/2;
	
	return tot;
}
Non l'ho testata assiduamente ma dovrebbe essere corretta.
Un programmino di test
codice:
#include <stdio.h>
int sum(int k,int n);
int sum2(int k,int n);
int main ()
{
int p = 6;
	printf("La somma O(n) e':\n");
	for(int i = p; i <= 130;i++)
		printf("%d ", sum(p,i));
	printf("\n\nLa somma O(1) e':\n");
	for(int i = p; i <= 130;i++)
		printf("%d ", sum2(p,i));
	
	return 0;
}
int sum(int k,int n)
{
	int num;
	int tot = 0;
	for (num=k;num<=n;num++)
	{
			if (num % 2 == 0)
			{
				 tot = tot + num;
			}
	}
	return tot;
}
int sum2(int k,int n)
{
	k = (k+1)/2 *2;
	n = (n)/2 *2;
	if(k>n) 
		return 0;
	int tot = ((n + k) * ((n -k)/2 +1))/2;
	
	return tot;
}