Sounds like it might be you HDD. Do this to test/fix.
Start by making sure you have a backup of your files.
When booted open a command window - either powershell, command, or terminal by right clicking the start button. Right click whichever is there and run as admin or select the one open as admin.
This will scan the HDD (or SSD) for errors and fix them >> chkdsk c: /f You will have to reboot for it to run.
You can run it without the /f and it will let you know if it found errors but it won't fix them. with the /f it doesn't tell you about errors. I like to do that.
It could take a long time if there are serious errors or lots of them - do not interupt it. I have had it take hours.
After that runs - Open the cmd prompt again and enter >> sfc /scannow This will check the system files for corruption and replace them if necessary.
That will also take a while.
After that enter >> DISM.exe /Online /Cleanup-image /Restorehealth
If it still takes a long time to boot, your HDD is likely about to die.
Alternately:
Remove it and test it by plugging it in to another computer via USB with an adapter. -- You will need to change the drive designator from C to whatever and it will run without rebooting. Only chkdsk will work here.