diff --git a/SieveOfEratosthenes.java b/SieveOfEratosthenes.java new file mode 100644 index 0000000..389750c --- /dev/null +++ b/SieveOfEratosthenes.java @@ -0,0 +1,24 @@ +// Sieve of Eratosthenes is an algorithm that finds all the primes upto a certain number. + +import java.util.Scanner; + +class SieveOfEratosthenes { + public static void main(String args[]) { + int n; + System.out.print("Enter a number: "); + Scanner sc = new Scanner(System.in); + n = sc.nextInt(); + boolean composites[] = new boolean[n + 1]; + + for(int i = 2; i * i <= n; i++) { + if(!composites[i]) + for(int j = i * i; j <= n; j+=i) + composites[j] = true; + } + + System.out.println("Primes:"); + for(int i = 2; i <= n; i++) + if(!composites[i]) + System.out.println(i); + } +} \ No newline at end of file diff --git a/topologicalSorting.java b/topologicalSorting.java index 690177c..ec85870 100644 --- a/topologicalSorting.java +++ b/topologicalSorting.java @@ -1,91 +1,53 @@ -// A Java program to print topological -// sorting of a DAG -import java.io.*; import java.util.*; - -// This class represents a directed graph -// using adjacency list representation -class Graph { - // No. of vertices - private int V; - - // Adjacency List as ArrayList of ArrayList's - private ArrayList > adj; - - // Constructor - Graph(int v) - { - V = v; - adj = new ArrayList >(v); - for (int i = 0; i < v; ++i) - adj.add(new ArrayList()); +class Graph{ + int v; + LinkedList adj[]; + @SuppressWarnings("unchecked") + Graph(int v){ + this.v=v; + adj=new LinkedList[v]; + for(int i=0;i(); + } +} +class TopologicalSorting{ + public static void addEdge(Graph g,int u,int v){ + g.adj[u].add(v); } - - // Function to add an edge into the graph - void addEdge(int v, int w) { adj.get(v).add(w); } - - // A recursive function used by topologicalSort - void topologicalSortUtil(int v, boolean visited[], - Stack stack) + public static void toposortutil(Graph g,int node,boolean visit[],Stack st) { - // Mark the current node as visited. - visited[v] = true; - Integer i; - - // Recur for all the vertices adjacent - // to thisvertex - Iterator it = adj.get(v).iterator(); - while (it.hasNext()) { - i = it.next(); - if (!visited[i]) - topologicalSortUtil(i, visited, stack); + visit[node]=true; + int i; + Iteratorit=g.adj[node].iterator(); + while(it.hasNext()) + { + i=it.next(); + System.out.println(i); + if(!visit[i]) + toposortutil(g,i,visit,st); } - - // Push current vertex to stack - // which stores result - stack.push(new Integer(v)); + System.out.println("node"+node); + st.push(node); } - - // The function to do Topological Sort. - // It uses recursive topologicalSortUtil() - void topologicalSort() - { - Stack stack = new Stack(); - - // Mark all the vertices as not visited - boolean visited[] = new boolean[V]; - for (int i = 0; i < V; i++) - visited[i] = false; - - // Call the recursive helper - // function to store - // Topological Sort starting - // from all vertices one by one - for (int i = 0; i < V; i++) - if (visited[i] == false) - topologicalSortUtil(i, visited, stack); - - // Print contents of stack - while (stack.empty() == false) - System.out.print(stack.pop() + " "); + public static void toposort(Graph g){ + Stack st=new Stack(); + boolean visit[]=new boolean[g.v]; + for(int i=0;i