Можно ограничиться до
. Если можно сделать график указанной функции, было бы хорошо.
Программа рассчитала за полчаса. Но дело не в этом. Файл весит 1,5 Гб, архив - 150 Мб. Файл блокнотом не открывается (оперативы не хватает). И кроме Excelя у меня нет других средств построения графиков (да и вообще, если 10 точек на 1 мм, то
метров надо на график.) Как-то его зажимать или усреднять нецелесообразно - пропадут максимумы. Да и выглядеть это будет так, словно кривая почти заполняет всю область.
В общем, я посчитал только максимумы и минимумы для сумматорной функции. Их получилось около 7000, вот они:
Вот так максимумы зажимаются для
:
(как и должно быть - функция ограничена)
Я еще пытался выделить одну четверть из всех максимумов - получается все равно много. Если сейчас еще что-то получится - выложу.
(код программы)
Примитивно:
Код:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int i,f,d,S,Smin,Smax;
long long k,j,n;
int P[3402]; // здесь хранятся простые числа до корня из n
fstream ext, pr;
pr.open("Primes.txt",ios::in);
for(i=0;i<3402;i++){pr>>P[i];}
pr.close();
n=100000000;
ext.open("Extremums and summatory function of Moebius function.txt",ios::out);
ext<<1<<'\t'<<1<<'\t'<<1<<'\n';
S=1; Smin=1; Smax=1;
for(j=2;j<=n;j++){
k=j; i=0; d=P[0]; f=1;
while(d*d<=k && f!=0){
if(k%d==0){
k=k/d;
if(k%d==0){f=0;}
else{f=-f;}
}
i++; d=P[i];
}
if(k>1){f=-f;}
S+=f;
if(S>Smax){
Smax=S;
ext<<j<<'\t'<<Smin<<'\t'<<Smax<<'\n';
}
if(S<Smin){
Smin=S;
ext<<j<<'\t'<<Smin<<'\t'<<Smax<<'\n';
}
if(j%100000==0){cout<<j<<endl;}
}
ext.close();
}