Bài toán nhập n in ra số nguyên tố bé hơn n.
Dạ cho mình hỏi là tại sao khi in ra màn hình nó lại ra 2 số trùng vậy ạ vấn để của mình là ở hàm sobehon và hàm songuyento ạ. Cụ thể là trong vòng lập while khi mình nhập “3” thì nó sẽ in ra “22” cho mình hỏi là tại sao lại như vậy ạ?
Mình có coi qua cách giải trên mạng rồi ạ. Mình có thắc mắc là sao code mình nó lại như vậy?
#include<iostream>
using namespace std;
int songuyento(int n);
void sontbehon(int n);
int main()
{
int n;
cin>>n;
sontbehon(n);
return 0;
}
void sontbehon(int n) //Hàm ở đây để in ra số bé hơn
{
int u;
int i=1;
while(i<n)
{
u=songuyento(i);
cout<<u<<endl;
i++;
}
}
int songuyento(int n) //Hàm kiểm tra số nguyên tố
{
int i=1;
int sum=0;
while(i<=n)
{
if(n%i == 0)
{
sum=sum+1;
}
i++;
}
if(sum == 2)
{
return n;
}
}