30/09/2018, 17:43

Xóa các cột có chứa các số nguyên tố trong ma trận?

INPUT:

1
3 3
4 5 6
8 1 3
9 4 6

OUTPUT:

4
8
9

Bài này có thể có nhiều số nguyên tố khác nhau nên hơi khác so với bài xóa cột chỉ có 1 GTLN. Cám ơn vì đã giúp ạ.

Chi Ngo viết 19:49 ngày 30/09/2018

Nếu bạn làm được bài này với trường hợp xóa cột có GTLN thì cũng rất dễ dàng khi xóa các cột có chứa số nguyên tố mà.
Bạn dùng một vòng lặp ở ngoài, vòng lặp này sẽ tìm cột đầu tiên có chứa số nguyên tố => xóa cột đó đi. Vòng lặp lại thực hiện 1 lần nữa, nếu còn số nguyên tố thì sẽ xóa cột đầu tiên chưa số nguyên tố bạn tìm được. Nếu không có thì kết thúc vòng lặp. Vậy thôi, đơn giản đúng không nào.

chingovan.blogspot.com

Liferay & Programming

liferay, programming skill, java, tutorials

*grab popcorn* viết 19:47 ngày 30/09/2018

Muốn nhanh thì thế này.
Tạo 1 mảng 1 chiều phần tử = số cột của ma trận. Khởi tạo mảng đó = 1.
Ở cột nào có số nguyên tố thì đánh dấu vô mảng kia là 0
Thì khi in ra, chỉ in mấy cột đc đánh dấu 1 trong mảng kia.

asdasdasd viết 19:58 ngày 30/09/2018

@Linh_Tran1408 ơi . Tạo topic mới chú ý để Categorytag nhé . Bên Xóa cột có phần tử lớn nhất trong ma trận? này cũng không có , các bạn khác phải sửa giúp bạn . Tại 2 cái tên Topic giống nhau quá nên tớ để ý thôi , ko phải soi mói gì đâu nhé

Linh Trần viết 19:54 ngày 30/09/2018

Ai cho e code cụ thể đc k ạ? K nghĩ ra đc code ntn…

Chi Ngo viết 19:55 ngày 30/09/2018

Oh, không ai sống cuộc đời của bạn, bạn phải tự code thì mới cải thiện được kỹ năng của mình. Lập trình cần kiên trì mà.

Linh Trần viết 19:57 ngày 30/09/2018

M có làm đây nhưng k biết sai ở đâu mà k chạy được. B xem giúp m vs.

#include<stdio.h>
#include<conio.h>
#include<math.h>

int nto(int n)
{
	int i;
	if(n<2) return 0;
	for(i=2;i<=sqrt(n);i++)
		if(n%i==0) return 0;
	return 1;
}

main()
{
	int n,m,i,j,a[20][20];
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			scanf("%d",&a[i][j]);
	
	int k=m;		
	for(j=0;j<k;j++)
	{
		for(i=0;i<n;i++)
		{
			if(nto(a[i][j])) 
			{
				for(i=0;i<n;i++)
				{
					a[i][j]=a[i][j+1];
				}
				
				m--;
			}
				
		}
		
	}
	
	for (i=0;i<n;i++)
	{
	  	for (j=0;j<m;j++)
        	printf("%d ",a[i][j]);
      	printf("\n"); 
	}
}

Ngành của m k dùng nhiều đến code nhưng là môn bắt buộc nên phải học thôi chứ m cx k phải lười gì đâu, chỉ là nghĩ mãi k ra vs k khá môn này đc.

nhatlonggunz viết 19:53 ngày 30/09/2018

Là cái cột chỉ cần có 1 số nguyên tố thôi thì sẽ xóa hết hả bạn ?

Linh Trần viết 19:50 ngày 30/09/2018

Uk b, có ít nhất 1 số nguyên tố trong cột đó thì xóa cột đó đi. Dù sao bài này m cx giải quyết xong r b à.

Bài liên quan
0