Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу Программа primeFaktors с чего написать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
fefel fefel вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.11.2009
По умолчанию Программа primeFaktors с чего написать - 01.11.2009, 14:06

Привет всем, в хаскеле новичек. Прошу помочь с программой, по идее primeFaktors должна выдавать множители одного числа например
primeFaktors306 -> [2,3,3,17]
commonFactors должна принимать два числа и выдавать их общие множители по типу
commonFactors 51 306 -> [3,17]
Первая программа работает, вторая компилируется, но после задания 2 чисел выдает
ERROR - Cannot infer instance
*** Instance : Num (a -> b)
*** Expression : fromInt 51 306

Код:
primeFaktors :: Int -> [Int]
primeFaktors n = primeFaktors' n 2 where
    primeFaktors' n faktor
      | faktor*faktor > n   = [n]
      | n `mod` faktor == 0 = faktor : primeFaktors' (n `div` faktor) faktor
      | otherwise           = primeFaktors' n (faktor + 1)

                  
commonFactors :: Int -> Int -> [Int]
commonFactors n m = [(i+1) | i<-[0..((length [n]) - (length [m]))],[m] == (take (length [m]) (drop i [n]))] 
                    where [n] = primeFaktors n
                          [m] = primeFaktors m
Ответить с цитированием
  (#2 (permalink)) Старый
const_ptr const_ptr вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.09.2009
По умолчанию 02.11.2009, 19:49

Цитата:
commonFactors должна принимать два числа и выдавать их общие множители по типу
Вам нужно пересечение:
Код:
import Data.List 
--
commonFactors :: Int -> Int -> [Int]
commonFactors x y = intersect (primeFactors x) $ primeFactors y
Цитата:
Первая программа работает, вторая компилируется, но после задания 2 чисел выдает
ERROR - Cannot infer instance
*** Instance : Num (a -> b)
*** Expression : fromInt 51 306
fromInt - функция одного аргумента.
Ответить с цитированием
  (#3 (permalink)) Старый
fefel fefel вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.11.2009
По умолчанию 03.11.2009, 13:04

Вообщем получилось все таким образом:

Код:
primeFaktors :: Int -> [Int]
primeFaktors n = primeFaktors' n 2 where
    primeFaktors' n faktor
      | faktor*faktor > n   = [n]
      | n `mod` faktor == 0 = faktor : primeFaktors' (n `div` faktor) faktor
      | otherwise           = primeFaktors' n (faktor + 1)

                  
commonFactors :: Int -> Int -> [Int] 
commonFactors n m = match(primeFaktors n) (primeFaktors m)   

match :: (Eq a) => [a] -> [a] -> [a]
match [] ys = []
match xs [] = []
match (x:xs) ys
       |elem x ys= x: (match xs(delete x ys))
       |otherwise = match xs ys
delete x [] = []
delete x (y:ys)
       |x==y = ys
       |otherwise = y:(delete x ys)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
От чего программа может вычислять RUSSTUDENT Pascal 0 28.06.2011 15:26
Графическая программа с чего ее создать A n d r e y Вопросы начинающих программистов 1 24.05.2011 06:15
Windows Mobile 5.0 c помощью чего написать приложение Dmit Вопросы начинающих программистов 4 04.02.2011 20:27
Программа на VBA как ее написать NapN Visual Basic 2 08.10.2010 20:31
Программа для тестирования с чего ее начать писать Женя_кэт Delphi 9 13.09.2007 17:05
Программа на Flash с чего начать писать NRGize Flash и ActionScript 0 19.07.2007 01:27
Программа-таймер как написать NEBO WinAPI 2 15.09.2006 16:50
Как узнать с чего написать драйвера для железа Artemon Железо. Написание драйверов 3 28.08.2006 03:45
Игра Реверси с чего ее написать Shirley Delphi 1 16.04.2006 18:54
И за чего программа перестала редактировать код Slayer278 Мысли вслух 9 31.01.2006 01:12
Программа на строки как ее написать crazysun Pascal 1 31.12.2005 00:19
Кому чего написать Krazer_one Работа 1 04.07.2004 23:35



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов