Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 24 25 26 27 28 29 30 31 [32] 33   вперед  Ctrl
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
clihlt
clihlt,

и как вариант доваить ключ еще сюда
CFLAGS = -g -O2 -S

Добавил. Не вышло. Никакой новый исходник не появился.
13 май 09, 10:53    [7173346]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
clihlt
Member

Откуда: Донецк
Сообщений: 1122
А покажи плиз мейкфайл полностью.

Кстати с ключом -S Он не должен генерить екзешник. Только ассемблерный листинг.
13 май 09, 11:05    [7173421]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
2 Studentik, Vino

Решил еще кое-что проверить. Если выполнять двоичное деление последовательности больших нечётных чисел, на небольшую константу (3 например) что можно заметить, что в вычислениях интенсивно участвуют младшие разряды делимого. Старшие разряды обладают большой энтропией и в вычислениях принимают характер констант.


Тоесть, функция



может быть заменена на функцию



с меньшей вычислительной сложностью

Где

Ni - последовательность нечётных чисел,
P - константа-делитель (в нашем примере P=3)

Мою мысль проще понять если взять бумагу и ручку и следать несколько делений на 3 в столбик двух больших нечётных чисел, находящихся на расстоянии 2 друг от друга.
13 май 09, 11:10    [7173462]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
clihlt
А покажи плиз мейкфайл полностью.

Кстати с ключом -S Он не должен генерить екзешник. Только ассемблерный листинг.


Вот
+

# Makefile.in generated by automake 1.10.1 from Makefile.am.
# Makefile.  Generated from Makefile.in by configure.

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.


VPATH = /home/mayton/cpp/pbfa
pkgdatadir = $(datadir)/pbfa
pkglibdir = $(libdir)/pbfa
pkgincludedir = $(includedir)/pbfa
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
	TODO config.guess config.sub depcomp install-sh ltmain.sh \
	missing mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
 configure.lineno config.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
	html-recursive info-recursive install-data-recursive \
	install-dvi-recursive install-exec-recursive \
	install-html-recursive install-info-recursive \
	install-pdf-recursive install-ps-recursive install-recursive \
	installcheck-recursive installdirs-recursive pdf-recursive \
	ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
  distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
  { test ! -d $(distdir) \
    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
         && rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /home/mayton/cpp/pbfa/missing --run aclocal-1.10
AMTAR = ${SHELL} /home/mayton/cpp/pbfa/missing --run tar
AR = ar
AUTOCONF = ${SHELL} /home/mayton/cpp/pbfa/missing --run autoconf
AUTOHEADER = ${SHELL} /home/mayton/cpp/pbfa/missing --run autoheader
AUTOMAKE = ${SHELL} /home/mayton/cpp/pbfa/missing --run automake-1.10
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E 
CPPFLAGS = 
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -O2 -g0
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL = 
ECHO = echo
ECHO_C = 
ECHO_N = -n
ECHO_T = 
EGREP = /usr/bin/grep -E
EXEEXT = 
F77 = 
FFLAGS = 
GREP = /usr/bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LDFLAGS = 
LIBOBJS = 
LIBS = 
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS = 
MAKEINFO = ${SHELL} /home/mayton/cpp/pbfa/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
NMEDIT = 
OBJEXT = o
PACKAGE = pbfa
PACKAGE_BUGREPORT = 
PACKAGE_NAME = 
PACKAGE_STRING = 
PACKAGE_TARNAME = 
PACKAGE_VERSION = 
PATH_SEPARATOR = :
RANLIB = ranlib
SED = /usr/bin/sed
SET_MAKE = 
SHELL = /bin/sh
STRIP = strip
VERSION = 0.1
abs_builddir = /home/mayton/cpp/pbfa/optimized
abs_srcdir = /home/mayton/cpp/pbfa
abs_top_builddir = /home/mayton/cpp/pbfa/optimized
abs_top_srcdir = /home/mayton/cpp/pbfa
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 = 
am__include = include
am__leading_dot = .
am__quote = 
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias = 
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias = 
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = $(SHELL) /home/mayton/cpp/pbfa/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = /home/mayton/cpp/pbfa
sysconfdir = ${prefix}/etc
target_alias = 
top_builddir = .
top_srcdir = /home/mayton/cpp/pbfa

# not a GNU package. You can remove this line, if
# have all needed files, that a GNU package needs
AUTOMAKE_OPTIONS = foreign 1.4
SUBDIRS = src
all: config.h
	$(MAKE) $(AM_MAKEFLAGS) all-recursive

.SUFFIXES:
am--refresh:
	@:
$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
	      cd $(srcdir) && $(AUTOMAKE) --foreign  \
		&& exit 0; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  Makefile'; \
	cd $(top_srcdir) && \
	  $(AUTOMAKE) --foreign  Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    echo ' $(SHELL) ./config.status'; \
	    $(SHELL) ./config.status;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
	esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	$(SHELL) ./config.status --recheck

$(top_srcdir)/configure:  $(am__configure_deps)
	cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)

config.h: stamp-h1
	@if test ! -f $@; then \
	  rm -f stamp-h1; \
	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
	else :; fi

stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
	@rm -f stamp-h1
	cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in:  $(am__configure_deps) 
	cd $(top_srcdir) && $(AUTOHEADER)
	rm -f stamp-h1
	touch $@

distclean-hdr:
	-rm -f config.h stamp-h1

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

distclean-libtool:
	-rm -f libtool

# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
#     (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
	@failcom='exit 1'; \
	for f in x $$MAKEFLAGS; do \
	  case $$f in \
	    *=* | --[!k]*);; \
	    *k*) failcom='fail=yes';; \
	  esac; \
	done; \
	dot_seen=no; \
	target=`echo $@ | sed s/-recursive//`; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    dot_seen=yes; \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done; \
	if test "$$dot_seen" = "no"; then \
	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
	fi; test -z "$$fail"

$(RECURSIVE_CLEAN_TARGETS):
	@failcom='exit 1'; \
	for f in x $$MAKEFLAGS; do \
	  case $$f in \
	    *=* | --[!k]*);; \
	    *k*) failcom='fail=yes';; \
	  esac; \
	done; \
	dot_seen=no; \
	case "$@" in \
	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
	  *) list='$(SUBDIRS)' ;; \
	esac; \
	rev=''; for subdir in $$list; do \
	  if test "$$subdir" = "."; then :; else \
	    rev="$$subdir $$rev"; \
	  fi; \
	done; \
	rev="$$rev ."; \
	target=`echo $@ | sed s/-recursive//`; \
	for subdir in $$rev; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done && test -z "$$fail"
tags-recursive:
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
	done
ctags-recursive:
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
	done

ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	mkid -fID $$unique
tags: TAGS

TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	tags=; \
	here=`pwd`; \
	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
	  include_option=--etags-include; \
	  empty_fix=.; \
	else \
	  include_option=--include; \
	  empty_fix=; \
	fi; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    test ! -f $$subdir/TAGS || \
	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
	  fi; \
	done; \
	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	    $$tags $$unique; \
	fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
		$(TAGS_FILES) $(LISP)
	tags=; \
	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
	unique=`for i in $$list; do \
	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
	  done | \
	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
	      END { if (nonempty) { for (i in files) print i; }; }'`; \
	test -z "$(CTAGS_ARGS)$$tags$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$tags $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && cd $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) $$here

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

distdir: $(DISTFILES)
	$(am__remove_distdir)
	test -d $(distdir) || mkdir $(distdir)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
	    fi; \
	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
	  else \
	    test -f $(distdir)/$$file \
	    || cp -p $$d/$$file $(distdir)/$$file \
	    || exit 1; \
	  fi; \
	done
	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    test -d "$(distdir)/$$subdir" \
	    || $(MKDIR_P) "$(distdir)/$$subdir" \
	    || exit 1; \
	    distdir=`$(am__cd) $(distdir) && pwd`; \
	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
	    (cd $$subdir && \
	      $(MAKE) $(AM_MAKEFLAGS) \
	        top_distdir="$$top_distdir" \
	        distdir="$$distdir/$$subdir" \
		am__remove_distdir=: \
		am__skip_length_check=: \
	        distdir) \
	      || exit 1; \
	  fi; \
	done
	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
	|| chmod -R a+r $(distdir)
dist-gzip: distdir
	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
	$(am__remove_distdir)

dist-bzip2: distdir
	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
	$(am__remove_distdir)

dist-lzma: distdir
	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
	$(am__remove_distdir)

dist-tarZ: distdir
	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
	$(am__remove_distdir)

dist-shar: distdir
	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
	$(am__remove_distdir)

dist-zip: distdir
	-rm -f $(distdir).zip
	zip -rq $(distdir).zip $(distdir)
	$(am__remove_distdir)

dist dist-all: distdir
	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
	$(am__remove_distdir)

# This target untars the dist file and tries a VPATH configuration.  Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
	case '$(DIST_ARCHIVES)' in \
	*.tar.gz*) \
	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
	*.tar.bz2*) \
	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
	*.tar.lzma*) \
	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
	*.tar.Z*) \
	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
	*.shar.gz*) \
	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
	*.zip*) \
	  unzip $(distdir).zip ;;\
	esac
	chmod -R a-w $(distdir); chmod a+w $(distdir)
	mkdir $(distdir)/_build
	mkdir $(distdir)/_inst
	chmod a-w $(distdir)
	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
	  && cd $(distdir)/_build \
	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
	    $(DISTCHECK_CONFIGURE_FLAGS) \
	  && $(MAKE) $(AM_MAKEFLAGS) \
	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
	  && $(MAKE) $(AM_MAKEFLAGS) check \
	  && $(MAKE) $(AM_MAKEFLAGS) install \
	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
	        distuninstallcheck \
	  && chmod -R a-w "$$dc_install_base" \
	  && ({ \
	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
	  && rm -rf "$$dc_destdir" \
	  && $(MAKE) $(AM_MAKEFLAGS) dist \
	  && rm -rf $(DIST_ARCHIVES) \
	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
	$(am__remove_distdir)
	@(echo "$(distdir) archives ready for distribution: "; \

	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
	@cd $(distuninstallcheck_dir) \
	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
	   || { echo "ERROR: files left after uninstall:" ; \
	        if test -n "$(DESTDIR)"; then \
	          echo "  (check DESTDIR support)"; \
	        fi ; \
	        $(distuninstallcheck_listfiles) ; \
	        exit 1; } >&2
distcleancheck: distclean
	@if test '$(srcdir)' = . ; then \
	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
	  exit 1 ; \
	fi
	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
	  || { echo "ERROR: files left in build directory after distclean:" ; \
	       $(distcleancheck_listfiles) ; \
	       exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-recursive
install-strip:
	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	  `test -z '$(STRIP)' || \
	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:

clean-generic:

distclean-generic:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive

clean-am: clean-generic clean-libtool mostlyclean-am

distclean: distclean-recursive
	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
	distclean-libtool distclean-tags

dvi: dvi-recursive

dvi-am:

html: html-recursive

info: info-recursive

info-am:

install-data-am:

install-dvi: install-dvi-recursive

install-exec-am:

install-html: install-html-recursive

install-info: install-info-recursive

install-man:

install-pdf: install-pdf-recursive

install-ps: install-ps-recursive

installcheck-am:

maintainer-clean: maintainer-clean-recursive
	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
	-rm -rf $(top_srcdir)/autom4te.cache
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-recursive

mostlyclean-am: mostlyclean-generic mostlyclean-libtool

pdf: pdf-recursive

pdf-am:

ps: ps-recursive

ps-am:

uninstall-am:

.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
	install-strip

.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
	all all-am am--refresh check check-am clean clean-generic \
	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
	dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
	distclean distclean-generic distclean-hdr distclean-libtool \
	distclean-tags distcleancheck distdir distuninstallcheck dvi \
	dvi-am html html-am info info-am install install-am \
	install-data install-data-am install-dvi install-dvi-am \
	install-exec install-exec-am install-html install-html-am \
	install-info install-info-am install-man install-pdf \
	install-pdf-am install-ps install-ps-am install-strip \
	installcheck installcheck-am installdirs installdirs-am \
	maintainer-clean maintainer-clean-generic mostlyclean \
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	tags tags-recursive uninstall uninstall-am

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
13 май 09, 11:17    [7173517]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
clihlt
Member

Откуда: Донецк
Сообщений: 1122
mayton,

возможно поможет ( если исходники Cpp не c)
CXXFLAGS = -O2 -g0 -S

Но вообще мейкфайл похож на вывод automake. если это так то опции компиляции наверно лучше задавать в $(srcdir)/Makefile.am. Там тоже можно написать CFLAGS = или CXXFLAGS =.
13 май 09, 11:29    [7173601]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
clihlt
Member

Откуда: Донецк
Сообщений: 1122
clihlt,

В крайнем случае, не мучайся, вызови g++ -O2 -S <имя_интересующего_тебя_cpp> с консоли - получишь листинг.
13 май 09, 11:45    [7173717]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Полезла куча багов.
mayton@alleria:~/cpp/pbfa2> g++ -O2 -S pbfa.cpp
pbfa.cpp:42: error: ‘UINT8’ was not declared in this scope
pbfa.cpp:42: error: template argument 1 is invalid
pbfa.cpp:42: error: template argument 2 is invalid
pbfa.cpp:42: error: invalid type in declaration before ‘;’ token
pbfa.cpp:43: error: ‘UINT16’ was not declared in this scope
pbfa.cpp:43: error: template argument 1 is invalid
pbfa.cpp:43: error: template argument 2 is invalid
pbfa.cpp:43: error: invalid type in declaration before ‘;’ token
pbfa.cpp:44: error: ‘UINT32’ was not declared in this scope
pbfa.cpp:44: error: template argument 1 is invalid
pbfa.cpp:44: error: template argument 2 is invalid
pbfa.cpp:44: error: invalid type in declaration before ‘;’ token
pbfa.cpp:45: error: ‘UINT64’ was not declared in this scope
pbfa.cpp:45: error: template argument 1 is invalid
pbfa.cpp:45: error: template argument 2 is invalid
pbfa.cpp:45: error: invalid type in declaration before ‘;’ token
Ладно. Направление мне ясно. Спасибо за советы. Дальше сам как-нибудь разберусь.
13 май 09, 11:51    [7173766]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
clihlt
Member

Откуда: Донецк
Сообщений: 1122
mayton,

Еще как вариант попробовать вызвать ./configure CXXFLAGS="-S -O2" и потом make.
13 май 09, 12:13    [7173925]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
clihlt
Member

Откуда: Донецк
Сообщений: 1122
mayton,

Если еще интересно... Создал проект KDevelop'om. Да действительно он генерит автомейковские проекты.

Удалось добится чтобы он генерил исходники asm'овские.
для этого:
1) сделал make distclean
2) пошол в папку где лежат c ( cpp ) файлы и отредактировал файл Makefile.am :
Добавил к AM_CFLAGS = -Wall -g -S. ( кстати -g лучше убирать, т.к. отладочная инфа в асм исходниках делает их гораздо менее читабельными ).
3) Вернулся в корневую папку проекта и выполнил
automake
./configure
make

И в результате получил асмовые исходники. Но правда с расширением *.o. Ну да это и понятно т.к. автомейковая система принудительно задает имена файлов. Ну и естественно не получил экзешника т.к. попытка слинковать вот такие вот *.o файлы успеха не возымела.

Интересно как суда цели сборки добавить чтобы он и асм и екзе генерил...

ЗЫ: Заметил и у тебя и у себя в мейкфале опцию -O2, если юзать -O3 - то возможно получишь хороший прирост в быстродействии. Иногда разница очень ощутима между -O2 и -O3.
13 май 09, 16:33    [7175942]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
clihlt
Member

Откуда: Донецк
Сообщений: 1122
clihlt
mayton,

Еще как вариант попробовать вызвать ./configure CXXFLAGS="-S -O2" и потом make.


Попробовал сам так сделать )). Идиотский совет. Не отработал даже configure. Т.к. он при конфигурировании компилит куски кода и у него ничего не выходит, т.к. генерятся asm' Листинги
13 май 09, 16:36    [7175970]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
clihlt
mayton,

Если еще интересно... Создал проект KDevelop'om. Да действительно он генерит автомейковские проекты.

ОК. Вечером попробую. Щас сижу на другой машине.
13 май 09, 16:47    [7176032]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
студентик
Member

Откуда: Альфа Центавра
Сообщений: 294
mayton
2 Studentik, Vino

Решил еще кое-что проверить. Если выполнять двоичное деление последовательности больших нечётных чисел, на небольшую константу (3 например) что можно заметить, что в вычислениях интенсивно участвуют младшие разряды делимого. Старшие разряды обладают большой энтропией и в вычислениях принимают характер констант.


Тоесть, функция



может быть заменена на функцию



с меньшей вычислительной сложностью

Где

Ni - последовательность нечётных чисел,
P - константа-делитель (в нашем примере P=3)

Мою мысль проще понять если взять бумагу и ручку и следать несколько делений на 3 в столбик двух больших нечётных чисел, находящихся на расстоянии 2 друг от друга.


Идея интересна, но реализоват ее сейчас к сожалению не смогу. Щас в голове вертится мысль об оптимизации переборного алгоритма, но она довольна сложна и требует разбора. Если все получится постараюсь в скором выложить...
13 май 09, 21:39    [7176880]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
vino
Member

Откуда:
Сообщений: 1191
mayton
2 Studentik, Vino
Решил еще кое-что проверить. Если выполнять двоичное деление последовательности больших нечётных чисел, на небольшую константу (3 например) что можно заметить, что в вычислениях интенсивно участвуют младшие разряды делимого. Старшие разряды обладают большой энтропией и в вычислениях принимают характер констант.

Тоесть, функция

может быть заменена на функцию

с меньшей вычислительной сложностью
Где
Ni - последовательность нечётных чисел,
P - константа-делитель (в нашем примере P=3)
Мою мысль проще понять если взять бумагу и ручку и следать несколько делений на 3 в столбик двух больших нечётных чисел, находящихся на расстоянии 2 друг от друга.

В двоичной системе не встречал такого, чтобы "Старшие разряды обладают большой энтропией и в вычислениях принимают характер констант". Так что на меньшую вычислительную мощность не стоит расчитывать. Понятно, что при делении на N чисел, отличающихся друг от друга не больше чем N-1, мы получаем результаты, отличающиеся друг от друга менее чем на 1 (обычно только дробные части)
Так вот принцип решета как раз минимизирует вычислительную нагрузку, избавляясь от самой тяжелой и массовой операции. Кстати, надеюсь, что Вы уже используете метод проверки на делимость, который предложил студентик? На С его можно привести практически к ассемблерному варианту и сделать inline для скорости - возможно, что и на 32 битах деление не понадобится
14 май 09, 00:23    [7177224]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton1
Guest
Вобщем, коллеги решил я подвести некоторые итоги.

1. Я решил отказаться от идеи хранения primеs. Она не выдерживает критики. Для её реализации в полной мере, для достижения хранения всех чисел хотя-бы до пред-пред-пред последнего числа Мерсенна расчитанного несколько лет назад, мне потребуются такие дисковые ресурсы, которых нет и возможно не будет.

2. Я изменил постановку с сторону более умных вычислений. Алгоритм будет примерно такой.

Создаётся кеш состоящий из двух частей. Первая часть - классическое решето Эратсфена объемом 512М хранит простые числа до 4 млрд (диапазон целого 32-х разрядного). Вторая часть кеша объемом в 1G отдаётся под Фильтр Блума, который хеширует числа диапазона от 4 млрд и выше настолько, насколько фильтр выдержит (об этом чуть позже). Здесь фиксируем максимальное последнее добавленное число число Pmax.

Оба кеша строятся 1 раз и сериализируются на диск. При бутстрапе сервиса они будут подняты в оперативку.

Собственно алгоритм.

1) На вход поступает анализируемое челое число в формате символьных целых.

2) Сервис проверяет диапазон. Если он входит в 4 млрд то идёт проверка по линии Эратосфена и выдача булевого результата.

3) Если анализируемое число в диапазоне от 4 млрд до Pmax то проверка идёт по линии Блума. Если фильтр выдает FALSE - то эта проверка 100% верна. Число - составное. Если TRUE - то подразумеваем вероятность 99.9% точного результата. Нужна доп. проверка. Переходим на линию фильтра Миллера-Рабина.

4) Миллер-Рабин работает последовательно после Блума. Его добротность мне неизвестна. Но предполагаю что она достаточно высока и в совокупности с предыдущим шагом даёт пересечение этих вероятностей. Опять-же если Рабин даёт FALSE - то выходим из алгоритма с сообщением что число составное. Если TRUE - то переходим на последнюю и самую тяжёлую проверку. Шаг (5)

5) Метод. Агравала — Каяла — Саксены (АКС). Даёт 100% верный результат, но возможно будет потреблять большое количество ресурсов CPU. Здесь нужно будет серъезно думать над хардварной оптимизацией.

Здесь есть два нерешённые проблемы:

Фильтр Блума.

В нем есть как минимум три взаимо-зависимых регулятора. Это величины m, n, k. Соответственно размер битовой карты, количество добавленных элементов и количество хеш-функций. Как их выбирать я еще не определился, но скорее всегу буду плясать от добротности P=0.999 размера битовой карты в 1G и имеющегося количества простых чисел, которые можно оценить по формуле n-ln(n) для двух вычитающихся диапазонов.

Какова должна быть добротность (здесь я подразумеваю вероятность выдачи точного результата). Для начала возму P=0.999. Тоесть на тысячу простых чисел должно быть одно ложное срабатывание. Но если будет нерациональное использование памяти то добротность буду понижать, надеясь на метод Рабина-миллера.

АКС.

Я не уверен что сходу смогу его реализовать. Возможно мне понадобиться консультация. Матчасть довольно сурова.

3. Вся эта байда ближе к лету переедет на мой личый public-сервер в интернете и будет доступна через протоколы Java-RMI, SOAP, и возможно CORBA.

Ожидаю поддержки и участия от всех.

Спасибо.
23 янв 11, 17:02    [10117370]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6905
А если прямо запрашивать необходимые результаты с mersenne.org?
23 янв 11, 22:40    [10118195]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6905
Вдогонку - http://v5.mersenne.org/v5design/v5webAPI_0.97.html
23 янв 11, 22:44    [10118202]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton1
Guest
Насколько я понял - это проект по исследованию чисел Мерсенна. Но это не всё множество простых чисел а только небольшая часть. Хотя диапазоны чисел м. впечатляют но постановка отличается от моей. Если я не верно понял идею проекта GIMPS - проясните. Буду благодарен. Читать там много букв да и лениво.
30 янв 11, 14:33    [10154722]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
серегй
Member

Откуда:
Сообщений: 40
mayton1
Вобщем, коллеги решил я подвести некоторые итоги.

1. Я решил отказаться от идеи хранения primеs. Она не выдерживает критики. Для её реализации в полной мере, для достижения хранения всех чисел хотя-бы до пред-пред-пред последнего числа Мерсенна расчитанного несколько лет назад, мне потребуются такие дисковые ресурсы, которых нет и возможно не будет.

2. Я изменил постановку с сторону более умных вычислений. Алгоритм будет примерно такой.

Создаётся кеш состоящий из двух частей. Первая часть - классическое решето Эратсфена объемом 512М хранит простые числа до 4 млрд (диапазон целого 32-х разрядного). Вторая часть кеша объемом в 1G отдаётся под Фильтр Блума, который хеширует числа диапазона от 4 млрд и выше настолько, насколько фильтр выдержит (об этом чуть позже). Здесь фиксируем максимальное последнее добавленное число число Pmax.

Оба кеша строятся 1 раз и сериализируются на диск. При бутстрапе сервиса они будут подняты в оперативку.

Собственно алгоритм.

1) На вход поступает анализируемое челое число в формате символьных целых.

2) Сервис проверяет диапазон. Если он входит в 4 млрд то идёт проверка по линии Эратосфена и выдача булевого результата.

3) Если анализируемое число в диапазоне от 4 млрд до Pmax то проверка идёт по линии Блума. Если фильтр выдает FALSE - то эта проверка 100% верна. Число - составное. Если TRUE - то подразумеваем вероятность 99.9% точного результата. Нужна доп. проверка. Переходим на линию фильтра Миллера-Рабина.

4) Миллер-Рабин работает последовательно после Блума. Его добротность мне неизвестна. Но предполагаю что она достаточно высока и в совокупности с предыдущим шагом даёт пересечение этих вероятностей. Опять-же если Рабин даёт FALSE - то выходим из алгоритма с сообщением что число составное. Если TRUE - то переходим на последнюю и самую тяжёлую проверку. Шаг (5)

5) Метод. Агравала — Каяла — Саксены (АКС). Даёт 100% верный результат, но возможно будет потреблять большое количество ресурсов CPU. Здесь нужно будет серъезно думать над хардварной оптимизацией.

Здесь есть два нерешённые проблемы:

Фильтр Блума.

В нем есть как минимум три взаимо-зависимых регулятора. Это величины m, n, k. Соответственно размер битовой карты, количество добавленных элементов и количество хеш-функций. Как их выбирать я еще не определился, но скорее всегу буду плясать от добротности P=0.999 размера битовой карты в 1G и имеющегося количества простых чисел, которые можно оценить по формуле n-ln(n) для двух вычитающихся диапазонов.

Какова должна быть добротность (здесь я подразумеваю вероятность выдачи точного результата). Для начала возму P=0.999. Тоесть на тысячу простых чисел должно быть одно ложное срабатывание. Но если будет нерациональное использование памяти то добротность буду понижать, надеясь на метод Рабина-миллера.

АКС.

Я не уверен что сходу смогу его реализовать. Возможно мне понадобиться консультация. Матчасть довольно сурова.

3. Вся эта байда ближе к лету переедет на мой личый public-сервер в интернете и будет доступна через протоколы Java-RMI, SOAP, и возможно CORBA.

Ожидаю поддержки и участия от всех.

Спасибо.



ну как получилось?
10 ноя 11, 14:30    [11575201]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Неа. Коллокейшн я себе так и не купил а виртуальные железки - это не торт.
У меня тож в голове свои тараканы по поводу виртуализации. Не люблю...
10 ноя 11, 14:37    [11575281]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Какой-то чел решил повторить мои вычисления.

http://habrahabr.ru/post/246789/
30 янв 15, 01:11    [17192979]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
miksoft
Member

Откуда:
Сообщений: 37444
mayton
Какой-то чел решил повторить мои вычисления.

http://habrahabr.ru/post/246789/
Наверное, вычисление простых чисел - один из велосипедов, которые должен написать каждый программист :)
В свое время я еще числа е и пи считал до какого-то там знака. Тем более, что в то время не было ни сети/интернета, ни графики, ни мощных фреймворков/библиотек, ни разнообразных устройств ввода/вывода, на которые можно было бы потратить свою страсть к исследованиям.
30 янв 15, 09:45    [17193594]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Еще один кабанчик https://m.habr.com/post/417753/

Решил упаковать primes в архив. Забавно. Читаешь и находишь свои же выводы.
Хотя человеко часов он угробил поболее. И с графиками.

Всю его статью еще не осилил.
22 июл 18, 08:45    [21591701]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
Dima T
Member

Откуда:
Сообщений: 13634
Да, велосипеды все похожие строят, но у меня после прочтения мысль появилась: хранить блоками, т.е. первое в блоке число и список дельт, т.е. смещений до следующего.
При таком подходе для проверки на простоту можно искать нужный блок двоичным поиском, а дальше внутри перебором.

А в остальном велосипед на квадратных колесах, т.к. даже если в 11 раз он уменьшил требуемое место для хранения, то все равно осталась прямая зависимость требуемого места от диапазона, т.е. даже для сохранения всех 64-битных простых места не хватит.
22 июл 18, 20:40    [21592485]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
mayton
Member

Откуда: loopback
Сообщений: 40512
Суть этих всех экспериментов одна.

Сделать хранилище эффективнее теста Миллера-Рабина. И надежнее. Тест допускает ложно-позитивный ответ.

На огромных целых типа там 128-256-512 бит хранилище мы всё равно не построим. Лопнет и Амазон и Гугл.

А вот до 64 бит - пожалуй можно.

Тоесть во всех этих задачах главная проблема - отсутствие конкретной цели.
22 июл 18, 21:22    [21592505]     Ответить | Цитировать Сообщить модератору
 Re: решение тривиальной алгоритмической задачи разными подходами и средствами  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47394
mayton
Тоесть во всех этих задачах главная проблема - отсутствие конкретной цели.

Пройдёт не так уж много времени и майнить ключи мёртвых счетов в биткоине будет выгоднее, чем сами битконы.
23 июл 18, 13:42    [21594180]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 24 25 26 27 28 29 30 31 [32] 33   вперед  Ctrl
Все форумы / Программирование Ответить